问题
单项选择题
有以下程序:
main()
int k=5,n=0;
while(k>0)
switch(k)
default:break;
case 1:n+=k;
case2:
case 3:n+=k;
k--;
printf("%d\n",n);
程序运行后的输出结果是
A) 0
B) 4
C) 6
D) 7
答案
参考答案:D
解析: 本题考查的是switch语句。在switch语句中,表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句,各个case和default的出现次序不影响执行结果。所以在本题中,当k=5和k=4的时候,case都没有与其匹配的值,所以执行了default语句;当k=3时,执行“case 3: n+=k;”,得n=3,然后执行default;当k=2时,执行“case 2: case 3: n+=k;”,得n=5,然后执行default;当k=1时,执行“case 1: n+=k;case 2: case3: n+=k;”,使得n加两次k,得到n=7。