有以下程序  #include <stdio.h>  main()  {   int a=1,b=2,c=3;   char flag;   flag=b>=2&&c <=3;   switch(a)   {   case 1:

admin2022-04-01  20

问题 有以下程序
 #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");
 }
 程序运行后的输出结果是(          )。

选项 A、**$$
B、%##
C、%&&
D、**##

答案B

解析 :main()函数中,根据b=2,c=3可知表达式b>=2&&e <=3为真,flag值为1;由a=1以及外层switch语句的case标号没有break语句,可知外层switch语句执行case 1,case 0;对于外层case 1:嵌套的switch语句根据flag=1执行case 1,执行printf(“%%”),“%%”输出结果是“%”,接着执行break语句,结束内层switch执行外层;对于外层case 0:嵌套的switch语句根据c=3执行default语句,执行printf(“##”),输出“##”,本题答案为B。
转载请注明原文地址:https://jikaoti.com/ti/qXd0FFFM
0

随机试题
最新回复(0)