问题
单项选择题
有以下程序:
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后面的常量表达式的值相等时,就执行此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; case2:case 3:n+=k; ”,使得n加两次k,得到n=7。