问题
单项选择题
有以下程序:
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语句。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。