C语言中if语句的运用

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);
}
有哪位大大能帮小弟在每句后作注释吗,我看不明白,(b<a&&a<c)不是为0吗,为还要运行后面的语句,这题答案为4599,我这的很想不明白为什么

main()
{
inta=3,b=4,c=5,t=99; .......................1
if(b<a&&a<c) t=a;a=c;c=t; .......................2
if(a<c&&b<c) t=b;b=a;a=t; .......................3
printf("%d%d%d\n",a,b,c); .......................4
}
第1句:新建4个变量并分别赋初值;
第2句:如果b小于a并且a小于c则执行t=a这条语句。由于b大于a这个条件,故不执行这条语句;
然后执行a=c;c=t;这两条语句,这两条语句不是if下面的语句。执行这两条语句后:a=5,c=99;如果这样写:if(b<a&&a<c) {t=a;a=c;c=t;} 则这三条语句都不执行。
第3句:如果a小于c并且b小于c则执行t=b这条语句。满足条件,所以t=4;
然后执行b=a;a=t;这条语句这时:b=5,a=4;
第4句:分别输出a,b,c的值! 这时a=4,b=5,c=99 故最后答案为4599
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-24
if
a=0;
then
b=1;
else
b=2;
判断语句,如果的意思。
if-else是判断语句,if(条件表达式,返回一个布尔型变量),如果是真,那就执行if后面的语句,并且跳过else后面的语句,要是返回假,则执行else里面的语句,if里面的语句就不会得到执行~
第2个回答  2009-02-20
main()
{
int a=3,b=4,c=5,t=99; 从这题来看,这应是T中间变量,用来进行另两个数的交换,故T可不用赋值
if(b<a&&a<c) t=a;a=c;c=t; b<a&&a<c这是B小于A并且A小于C 若满足这条件,则A与C的值互换
if(a<c&&b<c) t=b;b=a;a=t; 这与上式意思相同
printf("%d%d%d\n",a,b,c);
}
第3个回答  推荐于2016-07-28
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=c,c=t
第二次 表达式为真 执行下面三个语句 然后输出
a=4,b=5,c=99本回答被提问者采纳
第4个回答  2009-02-21
main()
{
int a=3,b=4,c=5,t=99;
if(b<a&&a<c) t=a;a=c;c=t; /*从以上赋值来看得出其式 4<3&&3<5 在条件式中若是其式错了结果为0对了为1 得其结果为 0&&1 .而&&这符号需要左边的值跟右边的值为1时其最终值才得1否则为0.以下的也一样*/
if(a<c&&b<c) t=b;b=a;a=t;
printf("%d%d%d\n",a,b,c);
}
相似回答