A-A+
有以下程序 main () { int k=5 n=0; while (k>0) { swi
问题详情
有以下程序 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 ("%dn",n); 程序运行后的输出结果是
A.0
B.4
C.6
D.7请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:D
解析:本题考查的是switch语句。switch语句中的case或default只是一种入口标号,它并不形成一种子句的概念。当满足其中某个标号的条件而进入switch语句中时,如果没碰到break语句,将一直执行到switch语句的结尾。题目中使用了一个while循环使k从5递减到1,当k=5或4的时候从default标号进入switch,碰到break;语句立即跳出,没有改变n:当k=3时,执行了一次n+=k;;k=2时,也执行了一次n+=k;k=1时,执行了两次n+=k;所以最终n的值为3+2+1+1=7。故应该选择D。