A-A+
有以下程序:main{ int x=0 y=5 z=3;while(z-->0&&++x
问题详情
有以下程序:
main
{ int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-l;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是()。
A.3,2,0
B.3,2,-1
C.4,3,-1
D.5,2.-5请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:B
while语句执行如下:当z=3,x=0时,表达式Z-->0&&++x<5为真,z的值变为2,x的值变为1,执行语句“y=y-1;”,y的值变为4;当z=2,x=1时,表达式z-->O&&++x<5为真,z的值变为1,x的值变为2,执行语句“y=y-1;”,y的值变为3;当z=1,x=2时,表达式z-->0&&++x<5为真,z的值变为0,X的值变为3,执行语句“y=y-1;”,y的值变为2;当z=0,x=3时,表达式z-->0为假,表达式(Z-->O&&++x<5)为假,z的值为-1,不进行++x<5的判断,不执行语句y=y-1;;所以x的值为3,y的值为2,z的值为-1。答案为B。