问题
单项选择题
有以下程序:
main()
{ int k=5,n=0;
while(k>0)
{switch(k)
{
default : break; case 1 : n+=k; case 2 :
case 3 : n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是______。
A.0
B.4
C.6
D.7
答案
参考答案:D
解析:
在 switch 语句中,表达式的值与某一个 case 后面的常量表达式的值相等时,就执行此 case 后面的语 句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case和 default 的出现次序不影响执行结果。所以在本题中,当 k=5 和 k=4 的时候,case 都没有与其匹配的值, 所以执行了 default 语句;当 k=3 时,执行“case 3 : n+=k;”得 n=3,然后执行 default;当 k=2 时,执行“case2 : case 3 : n+=k;”得 n=5,然后执行 default;当 k=1 时,执行“case 1 : n+=k; case 2 : case 3 : n+=k;” 使得 n 加两次 k,得到 n=7。