程序代码:
# include <stdio.h> int main(void) { int a, b, c; printf("请输入三个整数(中间以空格隔开)\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d",a); printf("\n"); printf("b=%d",b); printf("\n"); printf("c=%d",c); printf("\n"); if (a > b && b > c) printf("由大到小依次为 %d %d %d\n", a, b, c); if (a > c && c > b) printf("由大到小依次为 %d %d %d\n", a, c, b); if (b > a && a > c) printf("由大到小依次为 %d %d %d\n", b, a, c); if (b > c && c > a) printf("由大到小依次为 %d %d %d\n", b, c, a); if (c > a && a > b) printf("由大到小依次为 %d %d %d\n", c, a, b); if(c>b&&b>a) //7 9 8 printf("由大到小依次为 %d %d %d\n", c, b, a); }首先说说scanf()输入的问题,关于能不能有空格的问题我不太懂,但是这里我测试了一下,这样输入没有问题,但这样运行确实存在问题,就拿这个排序来说,首先三个数根据排列组合确实是6种情况,但楼主用else判断最后一种情况,无疑是放大了范围,即默认为if(c>b&&b>a)这种情况,事实证明当测试7,9,8的时候,会出现两个结果,然只有一个对的。可以试想一下else下的情况也可以是(c>a&&c<b)等等情况,当然我只是根据自己的理解,也测试一下,目前没有发现问题,就说说我的看法了。