请教C语言题目

来源:百度知道 编辑:UC知道 时间:2024/04/30 19:05:24
这个题目怎么理解啊?
main( )
{ int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5

-->这个运算符是怎么计算的?请行家赐教!

z--是先判断z>0的表达式,再将z的值自减1
++x是先将x的值自加1,再判断x<5的表达式
while循环是判断z-->0和++x<5这两个表达式的值,如果都为真,那么才执行y自减1的表达式
第一次循环,z(3)>0并且x(1)<5,那么y=5-1=4,此时x=1,y=4,z=2
第二次循环,z(2)>0并且x(2)<5,那么y=4-1=3,此时x=2,y=3,z=1
第三次循环,z(1)>0并且x(3)<5,那么y=3-1=2,此时x=3,y=2,z=0
第四次循环,z(0)不大于0,x(4)虽然小于5,但是前一个条件不满足,为假,所以程序结束
输出第三次循环结果,3,2,0

答案为B ,即3,2,-1。
第一次循环, z=3,z>0,执行z--后z=2; x执行++x后,x=1; y=4.
第二次循环, z=2,z>0,执行z--后z=1; x执行++x后,x=2; y=3;
第三次循环, z=1,z>0,执行z--后z=0; x执行++x后,x=3; y=2;
第四次循环, z=0,执行"z>0"的结果为假,不满足循环条件,之后执行z--,z=-1;
循环结束。
输出结果,3,2,-1

选择A,作为考试,是不可能给你时间每一个循环去推算的,可以明显看到,
while(z-->0&&++x<5) y=y-1

Z最后一定是0,那么可以排除其它所有答案

这样的问题只有考试的时候出,编程的人用不上

呵呵-->这个不是运算符 是减减 在判断大小的
现在知道选哪个了三

(z--)>0
选A