c语言三个数排列大小 - 爱问答

(爱问答)

c语言三个数排列大小

#include<stdio.h>

 

int main()

 

{

    int a,b,c,dy,de,ds;

    printf("输入三个数: ");

    scanf("%d%d%d",&a,&b,&c);

 

    if (a>b&&a>c)

        dy=a;

    if (b>a&&b>c)

        dy=b;

    if (c>a&&c>b)

        dy=c;

    if (a>b&&a<c||a>c&&a<b)

        de=a;

    if (b>a&&b<c||b>c&&b<a)

        de=b;

    if (c>a && c<b || c>b && c<a)

        de=b;

    if (a<b && a<c)

        ds=a;

    if (b<a && b<c)

        ds=b;

    if (c<a && c<b)

        ds=c;

 

   if (dy==de || dy==ds || de==ds)

 

printf("您输入了两个或三个一样的数. ");

 

    else

 printf("%d %d %d ",dy,de,ds);

 

    return 0;

}


为什么输入两个一样的数,或者三个一样的数,不执行倒数第二个printf语句.

这是因为当a=b=c时,dy、de、ds在前面均没有赋值,他们的初值又没赋零,故实际上不相等,所以不执行 printf("您输入了两个或三个一样的数. ");

况且  if (dy==de || dy==ds || de==ds) 这个判断在逻辑上不对,不是dy=de=ds的判断!


解决方法:

1 将dy、de、ds的初值赋零 - 不提倡!

2 把 if (dy==de || dy==ds || de==ds) 及 printf("您输入了两个或三个一样的数. ");

改成 if (a==b && a==c) 及 printf("您输入了两个或三个一样的数. ");

最好移到最前面作判断!!


相关标签:c语言

下一篇:Garlock的垫片可以重复使用吗?

上一篇:c语言怎么在printf里输出数字和文字

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?