问题 单项选择题

有以下程序: #include <stdio.h> main() { int x=1, y=0, a=0, b=0; switch(x) { ease 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d, b=%d\n", a, b); } 程序的运行结果是______。

A.a=2, b=2

B.a=2, b=1

C.a=1, b=1

D.a=1, b=0

答案

参考答案:B

解析: case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case 2语句的a++;b++;则a为2,b为1。所以结果为B。

计算题
单项选择题 共用题干题