编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。...
本题要求不能使用if, while, switch, for, ?: 以 及任何的比较语句,也就是要求我们不能用常规的方法来判断两个数的大小。
那么按照以往的方法,要判断两个数的大小,应该要将两个数进行减法运算,将结果与0进行比较。那现在不行进行比较,我们应该怎么办?
我们知道变量分为signed 和 unsigned 两种,有符号变量用最高位代表符号位。
- 当变量值为负数时,变量值的最高位为1,
- 当变量值为正数时,最高位为0
基于这种特性,我们可以用一个数组保存用于比较的两个数的值。如array[0]=b,array[1]=a;
将a,b做减法运算,并将结果值存放在一个有符号变量中,变量最高位对应的数组元素就是俩个数中较大的那个数。接下来看代码实现
int min(int a, int b) {int d = a - b;int flag = ((unsigned int)d) >> 31;int array[] = {b, a};return array[flag]; }int main(int argc, char *argv[]) {cout<< min(1, 2) <<endl;cout<< min(2, 1) <<endl;cout<< min(2, 10000)<<endl;cout << "Press the enter key to continue ...";cin.get();return EXIT_SUCCESS; }
转载于:https://www.cnblogs.com/a-lai/p/7338449.html
编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。...相关推荐
- 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...
- c语言有参有类最小公倍数,【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数...
程序分析: 在数学中,两个数的最小公倍数=两个数的乘积/两数的最大公约数. 求两个数的最大公约数,运用辗转相除法:已知两个整数M和N,假定M>N,则求M%N. 如果余数为0,则N即为所求:如果余 ...
- c语言学习-定义并调用函数求两个整数之差的绝对值
定义并调用函数求两个整数之差的绝对值 程序流程图: 代码: #include<stdio.h> int fabs(int m ,int n) {int f; f=m-n; if(f< ...
- 自定义函数求两个整数的和
一.自定义函数的构成: 自定义函数就是根据需要自己定义的函数,他的作用就是帮助我们实现我们想实现的功能.在定义函数时,需要注意以下几点: 1.函数名不可忽略.一个函数必须又一个合法的函数名,函数命名时 ...
- 使用函数求两个整数的最大公约数和最小公倍数
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p240 习题7 3.编写两个函数,分别求两个整数的最大公约数和最小公倍数 #include<st ...
- C语言试题七十三之请编写函数求两个数的最大公约数
1. 题目 编写函数:求两个数的最大公约数. 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数.几个自然数公有的约数,叫做这几个自然数的公约数.公约数中最大的一个公约数,称为这几个自 ...
- 【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数
程序分析: 在数学中,两个数的最小公倍数=两个数的乘积/两数的最大公约数. 求两个数的最大公约数,运用辗转相除法:已知两个整数M和N,假定M>N,则求M%N. 如果余数为0,则N即为所求:如果余 ...
- C语言 编写函数求n个整数的和
编写一个函数sum,求主调函数传递过来的n个整数的和. 要求: 1)输入一个正整数n(n<100): 2)输入n个整数: 3)调用函数sum计算n个整数的和: 4)在主函数中打印所计算结果. 运 ...
- mysql编写函数 求1 n 偶数之和,编写求1 2 3 - n的函数.在main函数中调用该函数
输入两个正整数m,n,编写求阶乘的函数,计算m!/(n!*(m-n)!). C语言函数解答,谢谢. #includelongfactorial(intm,intn){longsum=1,sum1=1; ...
最新文章
- C++ Multisets
- linux中的压缩命令详细解析(一)
- html5 audio 获取播放时间,html5 audio 延时获取播放路径播放失败
- Vue入门 ---- vue-loader 、vue-cli
- 【转载】堆和栈的内存分配
- 有没有更好的写v =(v == 0?1:0)的方法; [关闭]
- .NET 中的序列化
- Ubuntu通用基础教程
- 一起学爬虫(Python) — 02
- halcon 相似度_怎样用深度学习判断两张图片的相似度?
- 微信小程序的wx.chooseImage如何把图片传给后端
- GEE——2018 年南非国家土地覆盖( 20 米分辨率多季节 Sentinel 2 卫星图像生成的)
- HPET(High Precision Event Timer)简要说明
- JIRA REST API调用方式
- 计算机网络桂电北海期末题,2078电大《网络信息制作与发布》试题和答案200407...
- 数组的常用方法(4)--es3.0:烧脑小练习
- 用 Python 自动生成 Excel 数据报表~
- 浏览器禁止video视频另存下载
- 在Echarts的barChart中,xAxis的axisLabel中,interval参数如何解释?
- U盘文件夹全变为.exe格式或U盘文件全部消失(U盘AutoRun病毒解决方法)