哪位c语言大神帮我说明一下这道题?

#include<stdio.h>
void main()
{
int a=4,b=3,c=5,t=0;
if(a<b) t=a;a=b;b=t;
if(a<c) t=a;a=c;c=t;
printf("%d%d %d \n",a,b,c);
}
为什么结果是50 3呢?

#include<stdio.h>
void main()
{
int a=4,b=3,c=5,t=0;
if(a<b) t=a;a=b;b=t;
/*
if语句只会影响到下一条语句
a=4,b=3,所以a<b不成功,t=a不执行。
接下来执行a=b;此时a=b=3
再执行b=t;此时b=t=0.
至此a=3,b=0,c=5,t=0
*/
if(a<c) t=a;a=c;c=t;
/*
同理a=3,c=5,a<c判断成功,执行t=a,此时t=a=3
接下来执行a=c;此时a=c=5
再执行c=t;此时c=t=3.
至此a=5,b=0,c=3,t=3
*/
printf("%d%d %d \n",a,b,c);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-19
1,是往后移一位,继续查找
for循环是找到x的位置后,将数组a中x位置后面的值往前移一位,即a[i]=a[i+1]
第2个回答  2011-03-19
a=5,b=0,c=3
%d前面两个没空格分隔

还有if是要用大括号的,如果没有,就只执行后面一句!
不然a=b,b=t是不关if管的了,它照样执行
第3个回答  2011-03-20
一条语句一条语的看:
int a=4,b=3,c=5,t=0;
//这个是赋值不用说了
if(a<b) t=a;a=b;b=t;
//4<3为假if条件不成立,t=a;不执行。继续往下执行a=b;现在a=3,。执行b=t;现在b=0;
if(a<c) t=a;a=c;c=t;
//a=3,c=5,a<c成立;if后的语句成立,t=a;现在t=3。a=c;因为c=5,即现在a=5。c=t;现在的t=3,所以c=3
到此为止,a=5,b=0,c=3,t=3
printf("%d%d %d \n",a,b,c);
第二%d后有个空格,所以结果是 50 3,如果没有应该是503
第4个回答  2011-03-21
你这个编程啊···先看编程规范吧!
第5个回答  2011-03-21
你应该把if后面的3个语句括起来。不然只执行了if(a<b) t=a;而后面的a=b;b=t;
都不是if的范围内