C语言菜鸟问题(30)

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:06:24
以下程序运行后输出的结果是_____
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c)
t=a;a=c;c=t;
if(a<c&&b<c)
t=b;b=a;a=t;
print("%d%d%d\n",a,b,c);
}
我要的是讲解 不是单纯的写出来个答案 。。。谢谢

4 5 99

main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c) //这个if不成立
t=a;a=c;c=t; //这里第一句不执行,但是后面两句不在if控制内,是要执行的。执行完后a=5,b=4,c=99;
if(a<c&&b<c) //这个if成立
t=b;b=a;a=t; //这里三句都要执行,相当于a,b互换,执行完后a=4,b=5,c=99;
print("%d%d%d\n",a,b,c);
}

所以答案是4 5 99

事实上,你的程序等价与我下面的,我调整了下格式让你看的更清楚先
当然,可能这个程序原来的想法是楼下几位所说的,但是由于程序if后面没有大括号,程序执行过程如同我下面说的
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c) //不满足
{t=a;}
a=c;c=t; //执行完毕是a=5,c=t=99,b=4
if(a<c&&b<c) //满足
{t=b;}//t=4
b=a;a=t; //b=5,a=4
print("%d%d%d\n",a,b,c); //输出了4,5,99
}
其实你想明白这个程序真正的过程,写下,然后分步调试,看着a,b,c,t的值应该能明白

第一条if语句不成立
第二条if语句条件成立
进入后 t=b b赋值给了t 也就是t = 4
b=a a=3 那么a赋值给了b b就等于3了
a=t 前面t被赋值成了4 那么a也就等于4
最后一条输出 abc的值
a就等于4
b等于3
c没变动过就是5
答案就是4,3,5

执行t=b,b=a,a=t
结果t=b=4,b=a=3,a=t=4
输出4,3,5

4,3,5