不用if语句判断出两个数的大小——值得借鉴

#include "stdafx.h"
#include <iostream> 
using namespace std; 
/* 
方法1:取平均值法 
大的为 ((a+b)+abs(a-b)) / 2 
小的为 (a+b - abs(a-b)) / 2 
*/ 
int fMax1(int a, int b) 
{     
    return  ((a+b)+abs(a-b)) / 2;  
} 
/* 
方法2:不使用abs() 
a<b时,a/b=0,所以前面为b*(b/a),后面为b/a,那么结果就是b 
a=b时,a/b=1,所以前面为a+b=2a,后面为2,那么结果就是a 
a>b时,b/a=0,所以前面为a*(a/b),后面为a/b,那么结果就是a 
*/ 
int fMax2(int a, int b) 
{ 
    int larger = (a*(a/b) + b*(b/a))/(a/b + b/a); 
    //long smaller = (b*(a/b) + a*(b/a))/(a/b + b/a); 
    return larger; 
} 
/* 
方法3:如果取 a/b 余数不为0,则说明a>b 
这是个好方法,不过题目说了,不能用“? :” 
*/ 
int fMax3(int a, int b) 
{ 
    return  (a / b) ? a : b; 
} 
/* 
方法4:移位法 
当b<0的时候以补码存,故最高位是1 
所以右移31位b>>31其实就是最高位的值 
b>=0时候最高位为0 
所以b跟1与时候为b,a=a-(a-b)=b 
b跟1作与运算时候为0,相当于a=a-0=a  
*/ 
int fMax4(int a, int b) 
{ 
    b = a - b; 
    a -= b & (b>>31);                    
    return a; 
} 
//移位法 
int fMax5(int a,int b) 
{ 
    int  c[2] = {a, b}; 
    int z = a - b; 
    z = (z>>31)&1; 
    return c[z]; 
} 
//移位法 
int  fMax6(int a, int b) 
{ 
    int flag = ((a - b) >> 31)&1; 
    return a - (a - b) * flag; 
} 
//我想这个应该是最牛B的一个 
int fMax7(int a, int b) 
{ 
    int pair[2] = {a, b};  
    return pair[a < b]; 
} 
int main(int argc, char* argv[]) 
{ 
    int a, b; 
    cout << "-------------------------------------------------" << endl; 
    cout << "input a :" << endl; 
    cin >> a; 
    cout << "input b :" << endl; 
    cin >> b; 
    cout << "-------------------------------------------------" << endl; 
    cout << "a = " << a << endl; 
    cout << "b = " << b << endl; 
    cout << "-------------------------------------------------" << endl; 
    cout << "(fMax1)the max number is : " << fMax1(a, b) << endl; 
    cout << "(fMax2)the max number is : " << fMax2(a, b) << endl; 
    cout << "(fMax3)the max number is : " << fMax3(a, b) << endl; 
    cout << "(fMax4)the max number is : " << fMax4(a, b) << endl; 
    cout << "(fMax5)the max number is : " << fMax5(a, b) << endl; 
    cout << "(fMax6)the max number is : " << fMax6(a, b) << endl; 
	cout << "(fMax7)the max number is : " << fMax7(a, b) << endl; 
    cout << "-------------------------------------------------" << endl; 
    system("pause"); 
    return 0; 
} 

### 回答1: 可以使用 if 语句来判断个数大小,具体代码如下: ```c #include <stdio.h> int main() { int a, b; printf("请输入个数:\n"); scanf("%d %d", &a, &b); if (a > b) { printf("%d 大于 %d\n", a, b); } else if (a < b) { printf("%d 小于 %d\n", a, b); } else { printf("%d 等于 %d\n", a, b); } return 0; } ``` ### 回答2: 用C语言判断个数大小可以通过使用if语句实现。 首先,需要声明个变量来存储这个数。假设这个变量分别为a和b。 然后,可以使用if语句判断它们的大小关系。比较大小的方式有很多,这里使用了最常见的方式。 代码示例: ```c #include <stdio.h> int main() { int a, b; printf("请输入个数:\n"); scanf("%d %d", &a, &b); if(a > b) { printf("%d 大于 %d\n", a, b); } else if(a < b) { printf("%d 小于 %d\n", a, b); } else { printf("%d 等于 %d\n", a, b); } return 0; } ``` 在上述代码中,首先使用`scanf`函数从用户处获取个输入的数值,并分别存储在变量a和b中。 然后,使用if语句进行判断。如果a大于b,就输"a 大于 b";如果a小于b,就输"a 小于 b";如果a等于b,就输"a 等于 b"。 最后,返回0表示程序执行结束。 这样就可以使用C语言判断个数大小了。 ### 回答3: 在C语言中,我们可以使用条件语句来比较个数大小。条件语句可以根据条件的结果执行不同的代码块。 假设我们有个数a和b,我们想要判断个数更大。我们可以使用if语句来进行比较。if语句的语法如下: ```c if (condition) { // 如果条件成立执行的代码块 } ``` 对比a和b的大小,我们可以使用if语句判断条件a大于b是否成立。如果条件成立,我们可以输a大于b的消息,否则输a小于或等于b的消息。下面是一个使用C语言进行大小比较的例子代码: ```c #include <stdio.h> int main() { int a = 10; int b = 5; if (a > b) { printf("a大于b\n"); } else { printf("a小于或等于b\n"); } return 0; } ``` 根据以上代码,我们定义了个整数变量a和b,然后使用if语句判断a是否大于b。如果条件成立,即a大于b,那么输"a大于b"的消息。否则,输"a小于或等于b"的消息。 这就是使用C语言判断个数大小的方法。根据具体需求,你可以根据这个方法来判断个数大小,并进行相应的逻辑操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值