c语言用if语句求三个数按顺序排列疑惑

2024-12-25 10:26:33
推荐回答(3个)
回答1:

你的这个程序要先修改一下,才能实现你所说的排序。将程序 改为:
#include /* include 这个词你漏掉了一个字符u */
#include /* 加上这个头文件,是因为后面有getch() */
void main()
{
int a,b,c,t;
printf("please input a,b,c.\n");
scanf("%d,%d,%d",&a,&b,&c);
/*下面这几个if语句都要加{ },否则不能实现从小到大排序 */
if(a>b) {t=a;a=b;b=t;} /* 这一句的意思是:如果a>b,则交换a和b,否则什么也不做。即用a存 放a b二者中较小的数,b存放较大的数*/
if(a>c) {t=a;a=c;c=t;} /* a再和c比较,a存放二者较小的数。经过这次比较后,a是三个数中最小的*/
if(b>c) {t=b;b=c;c=t;} /*b和c比较,b存二者中较小的数,c存较大的数*/
printf("%d,%d,%d\n",a,b,c); /*这样比较过再输出,则a最小,b其次,c最大*/
getch();
}

回答2:

你要记住,在定义a,b,c时,只是申请了三个内存空间,在执行if语句的时候,只是把a,b,c的值相互附给对方,而没有调换内存地址。 例如,我这边申请了四个盒子,分别代表了a,b,c,t,当我执行第一个if语句的时候,如果a>b,那么也就是说a盒子里存放的数比b盒子里存放的数大,那么,此时,系统就会把a盒子里的数放到t盒子里去,然后把b盒子里的数放到a盒子里去,同时会把t盒子里的数(应该是a盒子里的原数)放到b盒子里,这样就完成了,a和b内存没有变化,可是值交换了。 同理,其他两条if语句也是同样的情况。

回答3:

#include
#include
main()
{
int a,b,c,t;
printf("please input a,b,c.\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c) {t=a;a=c;c=t;}
if(b>c) {t=b;b=c;c=t;}
printf("%d,%d,%d\n",a,b,c);
getch();
}
你的输入语句不应该在d%上加逗号,scanf("%d%d%d",&a,&b,&c);这样就可以了