C++求两个数的最大值

//不使用if,:?等判断语句,求两个数字中最大的那个数字。
#include<iostream>
using namespace std;
int main()
{
    int a = -10;
    int b = -100;
    int c = (a + b + abs(a - b))/2;
//abs(x)是求绝对值的函数,a+b+(a与b的差值)就是最大数的两倍,再除以2即为最大数。
    cout << c << endl;
    return 0;
}
#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    int b = 100;
    int c = a - b;//
    int sr[] = { a, b };
    int i = unsigned(c) >> (sizeof(int)* 8 - 1);
    //判断c的最高位是0或者1,0则c是正数,1则c是负数,由此可以得出大小。
    //unsigned类型的数字,往左移动的时候,不管如何左边都补0。
    cout << sr[i] << endl;//根据下标取出最大值。
    return 0;
}
时间: 2024-08-07 10:17:57

C++求两个数的最大值的相关文章

用一个宏实现求两个数中的最大数

用一个宏实现求两个数中的最大数 在面试或者笔试中,经常会碰到"用一个宏实现求两个数中的最大数"这个题目,一般情况下,大家看到这个问题,觉得很容易实现,这有什么难度呢,随手就是一个: #define MAX(x, y) ((x) > (y) ? (x) : (y)) 注:用括号将宏定义整个括起来,在任何时候,都是一个好习惯. 如果能写出上边这个宏,你这道题的考试就能交差了,然后觉得对自己来说就是随手一写的事儿,那可就大错特错了.因为以上写法的宏定义,虽然也能拿到分数,但是在面试者或

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

求两个数的最大公约数

求两个数的最大公约数 问题:给定两个正整数a和b,求他们的最大公约数. 最简单的方法就是穷举法,如果a>b,那么依次计算1~b的所有整数是否是a和b的公约数. public static void main(String[] args) { long timer = System.currentTimeMillis(); System.out.println(getGCB(1000234234,1242342390)); System.out.println(System.currentTime

求两个数的最大公约数和最小公倍数

import java.util.Scanner; //求两个数的最大公约数,最小共倍数. public class CommonMaxDivisor { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int m=scanner.nextInt(); int n=scanner.nextInt(); scanner.close(); CommonMaxDivisor cmd=new

求两个数之间的随机正整数

求两个数之间的随机正整 数.并添到新数组,数组长度由自己指定.并且数组中不能有重复的值 function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } function numInt(n, min, max) { const arr = [] while(arr.length < n) { let num = getRandomInt(min, max) if (arr.i

求两个数的最大公约数和最小公倍数 C语言

C程序设计第八章的第一道题目,求两个数的最大公约数和最小公倍数.需要注意一下几点: 1.最大公约数和最小公倍数间的关系: 设两个数是a,b最大公约数是p,最小公倍数是q 那么有这样的关系:ab=pq 所以q=ab/p.2.任意整数和0的公约数是该整数的所有约数,所以它们的最大公约数为该整数本身.3.碾转相除法:被除数%除数=余数,如果余数不为0,就让原来的除数做为被除数,余数作为除数,再进行运算 被除数%除数=余数,直到得到的余数为0为止,此时的除数就是最大公约数. #include <stdi

求两个数的最大公约数(Euclid算法)

求两个数 p 和 q 的最大公约数(greatest common divisor,gcd),利用性质 如果 p > q, p 和 q 的最大公约数 = q 和 (p % q)的最大公约数. 证明:见 http://blog.csdn.net/niushuai666/article/details/7278027 public class Euclid{ // recursive inplementation public static int gcd(int p, int q){ if(q =

编程题:返回指针值的函数,求两个数中较大的数。

#include<stdio.h> int *max(int *x,int *y) { int *q; if(*x>*y)  q=x; else  q=y; return q; } void main() { int a,b,*p; scanf("%d,%d",&a,&b); p=max(&a,&b); printf("%d,%d,max is %d\n",a,b,*p); } 编程题:返回指针值的函数,求两个数中较

编程题:用函数调用实现,求两个数中的最小数。

#include<stdio.h> void main() { float min(float x,float y);  /*函数定义在调用的函数之后,要先声明*/ float a=3,b=4.1; printf("%.1f\n",min(a,b)); printf("%.1f\n",min(5,a*b)); printf("%.1f\n",min(b-1,min(a,b))); } float min(float x,float y