我是C/C++初学者,刚入门学的知识很少。学到教学课堂有这么一题,就是用初学的知识来比较两个整数a,b的大小。提示有用除法和bool。0*任何数为0,1*任何数为1. 考虑到如果a大于b的话int a除以int b结果为1反之为0.但是我初学想了好久还是不明白不用判断怎么去构筑这个程序。“输入两个整数,并显示大的数和小的数的值”。求求各位大佬指点下萌新!感激不尽(在C/C++控制台上的)。教学的老师说让自己思考,不可能说答案的。我实在不明白怎么做,十分难受,求解
2条回答 默认 最新
- threenewbee 2020-09-17 22:33关注
#include <stdio.h> int main() { int a; int b; scanf("%d%d", &a, &b); char * ch = "><="; int result = (((unsigned)(a - b)) / (1 << 31)) + (int)(a == b) * 2; printf("%c\n", ch[result]); return 0; }
或者
int a; int b; scanf("%d%d", &a, &b); char * ch = "><="; int result = ((a / b) == 0) + (int)(a == b) * 2; printf("%c\n", ch[result]);
下面是不用指针不用==的方法(scanf的指针另当别论,你也可以换成cin)
int a; int b; scanf("%d%d", &a, &b); char ch[] = "=><"; int result = (((unsigned)(a - b)) / (1 << 31)) + (((unsigned)(a - b - 0)) / (1 << 31)) + (((unsigned)(0 - a + b)) / (1 << 31)) ; printf("%c\n", ch[result]);
问题解决的话,请点下采纳。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿