
程序代码:
# 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)等等情况,当然我只是根据自己的理解,也测试一下,目前没有发现问题,就说说我的看法了。