有以下程序:
#include<stdio.h>
main()
{
int a=1,b=2,c=3;
char flag;
flag=b>=2 && c<=3;
switch(a)
{
case 1:switch(flag)
{
case 0: printf("**");break;
case 1: printf("%%");break;
}
case 0: switch(c)
{
case 1: printf("$$");break;
case 2: printf("&&");break;
default: printf("##");
}
}
printf("\n");
}
程序运行后的输出结果是
main()函数中, 根据 b=2, c=3 可知表达式 b>=2&&c<=3 为真, flag 值为 1; 由 a=1 以及外层 switch 语句的 case 标号没有 break 语句, 可知外层 switch 语句执行case 1、case 0; 对于外层 case 1, 嵌套的 switch 语句根据 flag=1 执行 case 1, 执行 printf("%%"),输出结果是“%”, 接着执行 break 语句; 对于外层 case 0, 嵌套的 switch 语句根据 c=3 执行default 语句, 执行 printf("##"), 输出“##”。 故本题答案为 B 选项。