求大神解答一下这个题的解题过程
下面程序段的运行结果为:Ainta=1,b=2,c=2,t;while(a<b<c){t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);...
下面程序段的运行结果为:A
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);
A 1,2,0
B 2,1,0
C 1,2,1
D 2,1,1
为什么选A呢?不是第一个while的条件就否定循环了。还是这道题错了?求解释 展开
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);
A 1,2,0
B 2,1,0
C 1,2,1
D 2,1,1
为什么选A呢?不是第一个while的条件就否定循环了。还是这道题错了?求解释 展开
1个回答
展开全部
这道题确实选A
首先,第一次循环并没有否定,因为这个循环实际是while((a<b)<c),a=1,b=2,所以a<b为真,即(a<b)=1,而c=2,所以((a<b)<c)是1<2,是成立的,然后进入while循环,循环一次后,a=2,b=1,c=1,t=1,然后再次判断,此时,a<b不成立,所以a<b=0,((a<b)<c)变成0<1,仍然成立,第二次进入循环,循环过后a=1,b=2,c=0,t=2,之后第三次判断,这次是1<0,不成立,跳出循环,输出a,b,c,所以选A
首先,第一次循环并没有否定,因为这个循环实际是while((a<b)<c),a=1,b=2,所以a<b为真,即(a<b)=1,而c=2,所以((a<b)<c)是1<2,是成立的,然后进入while循环,循环一次后,a=2,b=1,c=1,t=1,然后再次判断,此时,a<b不成立,所以a<b=0,((a<b)<c)变成0<1,仍然成立,第二次进入循环,循环过后a=1,b=2,c=0,t=2,之后第三次判断,这次是1<0,不成立,跳出循环,输出a,b,c,所以选A
追问
那我如果想要达到a<b<c就要用逻辑与了?
追答
对,程序不能识别这种连续小于的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询