问题 单项选择题

有以下程序:main(){ intk=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。

解答题
单项选择题 A2型题