问题 填空题

下列程序的输出结果是______。
#include<stdio.h>
main()
int x=1,y=1,a=1,b=1;
switch(x)
case 1:
switch(y)
Case0:a++;break;
case 1:b++;break;

case2:
a++;b++;break;

printf("a=%d,b=%d\n",a,b);

答案

参考答案:a=B,b=C

解析: 分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句;这时执行第二个switch语句,此时y=1,所以switch(y)= switch(1),因此执行case 1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case 1的复合语句执行完毕,由于在这个case 1的后面没有 break语句使其退出第一个switch语句,所以接着执行下列的case 2后面的语句,即将a、b各加1,得到a=2,b=3。

单项选择题
判断题