这个程序的答案为什么是4599,请祥细说明,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/04/27 14:42:46
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; //就是这里我不懂
printf("%d%d%d\n",a,b,c);
}
不好意思,是我输错啦
第一个条件是 t=a;a=c;c=t;
第二个条件是t=b;b=a;a=t;//请祥细给我解释这里

你说错了吧
你的程序执行的结果是435
补充:
你修改的后的程序应该是这样的
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;
printf("%d%d%d\n",a,b,c);
}
结果确实是4599了 :-)

下面我帮你分析一下
if(b<a&&a<c)
t=a;a=c;c=t;
if(a<c&&b<c)
t=b;b=a;a=t;
这一段换成这样描述更清楚一些
if(b<a&&a<c)//这一句相当与if(false &&true)即if(false) 所以接下来的t=a;不会执行
t=a;//这一句不执行
a=c;执行这句后 c的值5赋给了a a=5
c=t;执行这句后 t的值99赋给了c c=99
if(a<c&&b<c) //根据上边两句重新赋值的a和c判断,这一句相当与if(true &&true)即if(true) 所以接下来的t=b;会执行
t=b; 执行这句后 因为b的值是4 所以t变成4
b=a; 执行这句后 因为a的值是5 所以b的值变为5
a=t;执行这句后 因为t的值是4 所以a变为4

至此
a=4
b=5
c=99
t=4

所以会出现你那种结果

你出错的原因是:if判断之后只会执行后面的一句语句;,如果要多行语句需要
if(条件)
{ 语句;语句}

原始答案肯定错了,应该是435才对呀!
如果是下面这样,答案就是4599
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c)