heitu2019 2020-09-17 22:11 采纳率: 100%
浏览 201
已采纳

如何在不使用判断、函数等方法的情况下,输入两个整数,用bool比较两个整数的大小,并打印出结果?

我是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]);
    

    问题解决的话,请点下采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥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编程架构设计的方案 有偿