问题 单项选择题

有以下程序:
#include<stdio.h>
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。

填空题
填空题