问题
填空题
下列程序的输出结果是______。
#include<stdio.h>
main()
int x=1, y=1, a=1, b=1;
switch(x)
case 1:
switch(y)
case 0: a++; break;
case 1: b++; break;
case 2: a++: b++; break;
printf("a=%d, b=%d\n", a, b);
答案
参考答案:a=2,b=3
解析: 程序从x=1语句开始执行,之后执行第一个switch语句,x=1,所以执行case 1,case 1语句中包含一个复合swith语句;这时执行第二个switch语句,此时y=0,因此执行case 1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case 1的复合语句执行完毕,由于这个case 1的后面没有break语句使其退出,所以接着执行下列的case 2的后面的语句,即将a、b各加1,得到a=2,b=3。