问题 单项选择题

有以下程序:
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语句中,若case语句后没有break语句,则执行完本层case后会继续执行后面case中的操作。k的初值为5,while条件成立,进入switch(5),执行default语句,退出switch,执行k--后得4,再进入while循环,执行switch(4),退出switch,再执行k--后得3,继续while循环,执行switch(3),n=n+k=3,再执行k--后得2,进入while循环,执行case 2,再执行n=n+k=5,然后执行k--后得1,最后一次进入while循环,执行case1,n=n+k=6,然后继续执行case 2和case 3后的语句,n=n+k=7,且执行k--后得0,此时while条件不满足,退出循环,输出n的值为7。

单项选择题 共用题干题
单项选择题 A1/A2型题