美文网首页
别有洞天——三个数是否相等

别有洞天——三个数是否相等

作者: 莫一是 | 来源:发表于2017-11-21 01:02 被阅读0次

明解C语言的练习3-9要求如下:
输入三个整数,如果三个数相等,显示“三个值都相等”;如果其中有两个数相等,则显示“有两个值相等”;如果三个数都不相等,则显示“三个数各不相同”。
乍一看,这好像是一道送分题 ( ̄▽ ̄)"
你也许和我一样,迫不及待地写下了这段代码:


第一感觉

然而,机智如我敏锐地察觉到了不对。按数学定义a==b||a==c||b==c是包含a==b==c的情况的!
也就是说,这段代码的选择分支重叠了
运行结果是

运行结果1
运行结果2

上网查了下,有一位刷过明解C的前辈,晒出的练习代码也和上文有着一样的问题。

既然有了问题,就要动手解决它。
最后,我的代码如下:


最终代码

事实上,我最先改过的代码是这样的

#include <stdio.h>
int main(){
    int a,b,c;
    
    puts("请输入三个整数。");
    printf("整数A:"); scanf("%d",&a);
    printf("整数B:"); scanf("%d",&b);
    printf("整数C:"); scanf("%d",&c);
    
    if(a==b==c)
         puts("三个值都相等。");
    else if((a==b&&a!=c)||(a==c&&a!=b)||(b==c&&a!=b))
         puts("有两个值相等。");
    else
         puts("三个值各不相同。");   

         
    return 0;
}

但不知道为什么,a==b==c的条件在运行时,总是不能正确计算a=2,b=2,c=2的情况。无奈,改为了最终代码的形式。为什么不能正确计算?现在的我也不知道 ━━( ̄ー ̄*|||━━

总之,这个练习告诉我们:没学好概率论的程序员不是一个好的程序员!
o( ̄▽ ̄)ブ

相关文章

  • 别有洞天——三个数是否相等

    明解C语言的练习3-9要求如下:输入三个整数,如果三个数相等,显示“三个值都相等”;如果其中有两个数相等,则显示“...

  • 数字计算

    -eq 测试两个数字是否相等 -ne 测试两个数字是否不相等 -gt 测试一个数字是否大于另一个数字 -lt 测试...

  • python笔记day6

    补充: == 和 is == --- 判断两个数据的值是否相等 is --- 判断地址是否相等 python数...

  • 判断两个数组是否相等

    如何比较两个数组内容是否相等一、不能通过 '==' 或者 '===' 来判断两个数组是否相等 因为JavaScr...

  • java比较两个list是否相等

    判断两个list是否相等:先判断list的个数是否相等,然后判断是否相互包含。public boolean equ...

  • 查询字段是否含有中文

    通过查询长度和字符个数是否相等, 相等则不包含中文, 不相等则包含中文 原文见cnblog

  • Day7-容器类型

    ‘==’和‘is’ == - 判断两个数据的值是否相等is - 判断地址是否相等python数据存储:1.给变量赋...

  • day7-拷贝相关

    一.==和is ==——判断两个数据的值是否相等is——判断地址是否相等python数据存储: 给变量赋值的时候,...

  • day7 字典元组容器类型基操

    计算机基础随笔 == :判断两个数据的值是否相等 is:判断地址是否相等 python数据存储: 1.给变量赋值的...

  • 每天get几个JavaScript小技巧(二)

    判断两个数组是否相等 时间与时间戳转换 判断是否为微信

网友评论

      本文标题:别有洞天——三个数是否相等

      本文链接:https://www.haomeiwen.com/subject/hcqivxtx.html