有以下程序: main() { int x=0,y=5,z=3; while(z-->0&&++x<5)y=y-1; printf("%d,%d,%d\n",x,y,z); } 程序执行后的输出结果是( )。

admin2012-12-03  39

问题 有以下程序:
  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

答案B

解析 while语句执行如下:当z=3,x=0时,表达式z-->0&&++x<5为真,z的值变为2,x的值变为1,执行语句“y=y-1;”,y的值变为4;当z=2,x=1时,表达式z-->0&&++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-->O为假,表达式(z-->0&&++x<5)为假,z的值为-1,不进行++x<5的判断,不执行语句y=y—1;;所以x的值为3,y的值为2,z的值为-1,答案为B。
转载请注明原文地址:https://kaotiyun.com/show/CMPp777K
0

最新回复(0)