急问一道c程序题

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:23:28
下列程序段输出结果为( )
#include <stdio.h>
int main(void)
{
int a=1,b=2,c=2,t;
while(a<b<c){t=a;a=b;b=t;c--;}
printf("%d,%d,%d",a,b,c);
return 0;
}
A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1,

选a
理解那个while的控制语句就行了
(a<b<c)可以认为是((a<b)<c)
先要判断a<b
第一次的时候a=1,b=2
哪么a<b成立也就是a<b的结果为1
在判断1<c,也成立,所以执行循环
a,b互换,c自减,则a=2,b=1,c=1
在判断循环条件a<b,不成立
则a<b结果为0,0<c成立
则循环条件成立,执行循环
a,b互换,c自减
a=1,b=2,c=0
在判断循环条件
不成立,退出循环
打印a,b,c

初始条件
a = 1
b = 2
c = 2

关于while(a<b<c)
先计算a<b,因为a = 1, b = 2, 所以 a<b的结果为 1
再计算1<c,因为c = 2,所以while条件成立,执行循环体

执行结果为
a = 2
b = 1
c = 1

继续判断while循环,条件依然成立,执行循环体,执行结果
a = 1
b = 2
c = 0

继续判断while循环,条件不成立,跳出循环,输出结果
a = 1
b = 2
c = 1

楼上很强大,我开始也不知道呢,原来这么算的

A

关系运算符其结合方向为自左至右。

while(a<b<c) 就是
while((a<b)<c)

当然是A拉,循环两次