问题 单项选择题

有以下程序:
#include
main()
int x=1,y=0,a=0,b=0;
switch(X)
case 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=1,b=0

B.a=2,b=2

C.a=1,b=1

D.a=2,b=1

答案

参考答案:D

解析: 本题主要考查的是swifch语句的嵌套。首先看外层SWitch,因为x初始时为1,进入外层case 1分支,这里又是一个switch语句。因为y初始时为0,进入内层case 0分支,执行a++;break;,因为遇到break,所以此时应该跳出内层SWitch语句,跳出来后由于没有碰到break;语句,所以应执行外层case 2分支,a++:b++;break;,此时又遇到break;所以跳出外层switch语句。由此可见,整个Switch语句中,a被增1两次,b被增1一次,所以执行最后一条printf语句输出a=2,b=1。

单项选择题
单项选择题