一道c语言题,为何不选A而选b,求理由

7.设有变量说明语句
int a=1,b=0;
则执行以下程序段的输出结果为( )。
switch (a)
{
case 1:
switch (b)
{
case 0:printf("**0**");break;
case 1:printf("**1**");break;
}
case 2:printf("**2**");break;
}
printf("\n");
(A)**0** (B)**0****2** (C)**0****1****2** (D)有语法错误

第1个回答  2011-09-03
B。因为case 1:中缺少了break;语句,所以两个都执行,这是一种多路开关的办法,因为有些时候,判断结果虽不同,但要执行同一个语句,就可以用到。比如说:
int a=1;
switch(a)
{
case 1:/*没有break,否则不能实现多路开关模式*/
case 2:
pritnf("abcdefg");
break;
}
第2个回答  2011-09-03
执行 switch (b) 花括号里面的代码,当执行完case:0的时候,后面因为有一个break,所以就跳出了花括号,继续执行下行代码case 2:printf("**2**");break; 当执行完这个break,程序就跳出到printf本回答被提问者采纳
第3个回答  2011-09-03
switch (a)
{
case 1:
switch (b)
{
case 0:printf("**0**");break;
case 1:printf("**1**");break;
}
/*因为case1整体结束后这里并没有一个break,所以当case1执行完毕之后,系统会继续执行case2的内容 */
case 2:printf("**2**");break;
}
printf("\n");
第4个回答  2011-09-03
选B才对