题目
若所用变量均已正确定义,则执行下面程序段[1]后的值是()。 main ( ) ( int a = 2, b = 7, c = 5 ; switch ( a>0 ) { case 1 : switch (b<0) { case 1 : printf ( "@ case 0 : printf("!");break;) case 0: switch ( c==5 )( case 0 : printf ("#"); break; case 1 : printf("*");break;default: printf ( "%%");break;)default: printf ( "&" );}printf("n");}。A: !B: * C: & D: !*&
若所用变量均已正确定义,则执行下面程序段[1]后的值是()。
main ( ) { int a = 2, b = 7, c = 5 ;
switch ( a>0 )
{
case 1 : switch (b<0)
{
case 1 : printf ( "@ case 0 : printf("!");
break;
}
case 0: switch ( c==5 ){ case 0 : printf ("#");
break;
case 1 : printf("*");
break;
default: printf ( "%%");
break;}
default: printf ( "&" );}
printf("\n");}。
A: !
B: *
C: &
D: !*&
题目解答
答案
首先,我们来分析代码的执行过程:
首先,判断 a > 0,由于 a 的值是 2,因此 a > 0 为真,进入第一个 switch 语句。
在第一个 switch 语句中,再判断 b < 0,由于 b 的值是 7,因此 b < 0 为假,所以不会执行第一个 case 语句,直接跳到第二个 case 语句。
在第二个 case 语句中,判断 c == 5,由于 c 的值是 5,因此 c == 5 为真,执行第二个 case 语句中的 printf("*");,输出 *。
最后,程序执行到 default 分支,输出 &。
所以,执行完该程序段后的值是 *&,因此答案是 D: !*&。