方法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 。负数补码符号位是1,正数补码符号位是0。所以右移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;
} 

方法五:数组下标法

int fMax7(int a, int b)
{ int pair[2] = {a, b};  return pair[a < b];
} 

不用if比较两个数大小相关推荐

  1. 编写一个函数,实现计算两个数大小的比较,且返回最大值。

    例子:编写一个函数,实现计算两个数大小的比较,且返回最大值. 解释:当$a大于$b,返回最大值$a,当$b大于$b,返回最大值$b,否则输出null            实现效果:          ...

  2. 不用中间变量交换两个数的值

    交换两个数的值是一件非常简单的任务,如果交换a与b,我们一般这样做: tmp = a; a = b; b = tmp; 如果不用中间变量tmp,有以下两种方法: 方法1: a=a+b; b=a-b; ...

  3. 微信小程序比较两个数大小

    微信小程序,输入两个数比较大小 效果图 wxml代码 <!--index.wxml--> <view class="demo-box"><text c ...

  4. Java基础编程题目——定义一个比较两个数大小的方法

    编写一个方法判断两个数的大小,并返回较大的值 import java.util.Scanner;public class Max {public static void main(String[] a ...

  5. HTML数字比较大小游戏,Javascript 比较两个数大小并输出最大数

    题目:在页面中添加两个单行文本框,在两个文本框中输入两个数字,使用JavaScript函数比较这两个函数大小,并使用对话框输出最大数. 实现代码如下: function maxNum() { //获取 ...

  6. 汇编比较两个数大小_计算机是怎样跑起来的 -- 体验一次汇编过程

    标志内存或I/O中存储单元的数字叫做"地址". CPU中的标志寄存器有什么作用? 用于在运算指令执行后,存储运算结果的某些状态. 从程序员的角度看硬件 CPU:种类,时钟信号的频率 ...

  7. 用switch排两个数大小C语言,关于C语言Switch语句,先学这些技巧够不够?

    一.C语言中switch的用法 1.switch后面括弧内的[表达式],ANSI标准允许它为任何类型: 2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,否则,就 ...

  8. matlab问题利用M文件比较两个数大小,Matlab中写M文件及调用

    1题.自然数n的阶乘 function y=lilu_fact(n) n=floor(n);%如果是小数,向下取整至整数 y=1; if n>1  %这里负数,0的阶乘都将得到1 for i=1 ...

  9. C语言——比较两个数大小的两种写法

    1.普通写法 #include<stdio.h> int main() {int num1=10;int num2=20;if(num1>num2)printf("较大值是 ...

  10. 编程题:两个数比较大小,之后用变量t互换。

    编程题:两个数比较大小,之后用变量t互换. #include<stdio.h> void main() { float x,y,t; scanf("%f,%f",&am ...

最新文章

  1. 无线路由器与无线AP的区别
  2. Net设计模式实例之桥接模式( Bridge Pattern)(2)
  3. android 自定义view 动画效果,Android自定义view----音乐播放动画
  4. Linux添加用户(user)到用户组(group)
  5. win8看不到win7局域网计算机名,实现Win7旗舰版与win8.1系统局域网里文件共享的设置方法【图】...
  6. vue.js页面刷新出现闪烁问题的解决
  7. oracle rac 启动失败has,oracle11.2.0.4 rac asm启动故障
  8. Ubuntu chmod 命令
  9. codeigniter中base_url和site_url
  10. 【Linux学习】Vim 怎么设置显示行号以及永久性显示行号
  11. markdown 删除线
  12. 学习Python的三种境界,你现在是在什么境界?
  13. BMS-Pro电池巡检综合监控系统
  14. Spring中的AOP以及切入点表达式和各种通知
  15. “团队奖金包”让年终奖更公平
  16. 一款运动类APP开发需要哪些功能
  17. 【Git技巧】第三篇 删除冗余的本地或远程的操作分支
  18. 网络七层模型和四层模型的区别
  19. 文顶顶虽老,博客尚在
  20. Linux九阴真经之九阴白骨爪残卷12(日志功能)

热门文章

  1. PDF怎么编辑,如何给PDF添加书签
  2. 汇编移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR
  3. mysql phpmyadmin远程_phpMyAdmin远程连接mysql数据库
  4. MSVC创建的Qt工程图标设置
  5. [状压DP]帮助Bubu
  6. 正则表达式之提取数字
  7. 传16寸MacBook Pro九月发布 分辨率3072x1920
  8. 腾讯统一播放器 API 文档2.0
  9. 设置路由器虚拟服务器拦截广告,路由器怎么安装防火墙?拦截病毒广告就这么简...
  10. C# 将raw格式的二进制灰度图像转为正常位图格式