问题 单项选择题

有以下程序: main() {int k=5,n=0;while(k>0) {switch(k) {default:break;case 1:n+=k;case 2:case3: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时,执行“case3:n+=k;”得n=3,然后执行default;当k=2时,执行“case2:case3:n+=k”得n=5,然后执行default;当 k=1时,执行“case1:n+=k;case2:case3:n+=k;”使得n加两次k,得到n=7。

问答题 简答题
单项选择题 案例分析题