以下程序运行后输出的结果是什么?简单写一下过程~

来源:百度知道 编辑:UC知道 时间:2024/09/24 01:43:52
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);
}

首先判断第一个条件,a=3,b=4,并不满足b<a,所以if语句不执行.但要注意 t=a后面有分号,所以a=c;c=t;不受if语句控制.

所以执行a=c;c=t;得到a=5;c=99;b和t的值未改变,为b=4,t=99;

第二个条件,这时a=5,b=4,c=99,满足a<c&&b<c,所以执行t=b;得到t=4;

同样b=a;a=t;也不受第而个if语句控制,所以执行b=a;a=t;得到b=5,a=4,

最后结果为a=4,b=5,c=99,t=4
打印a,b,c 结果为 4599

if(a<c&&b<c) 成立,所以t=b=4,b=a=3,a=t=4
实际上就是交换a与b的值
(第一个if语句是交换a与c的值)
所以打印435

不是呀!我运行过,结果是4 5 99,好奇怪,这个答案只有执行两个if才会有这个答案的,为什么第一if也执行呀???我也晕 了