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