有以下程序: main() {int k=5,n=0; while(k>0) {switch(k) {default:break; case 1:n+=k; case 2: case 3:n+=k; }

admin2011-06-13  15

问题 有以下程序:    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。
转载请注明原文地址:https://kaotiyun.com/show/yVPp777K
0

最新回复(0)