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