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

admin2009-02-15  25

问题 有以下程序:    main()    {int    k=5,n=0;       while(k>0)    {switch(k)    {       default:break;       case 1:n+=k;       case 2:       case3:n+=k;    }    k-;    }    printf("%d\n",n);    }    程序运行后的输出结果是 ______。

选项 A、0
B、4
C、6
D、7

答案D

解析 在switch语句中,表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的 case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句,各个case和default的出现次序不影响执行结果。所以在本题中,当k=5和k=4的时候,case都没有与其匹配的值,所以执行了default语句;当k=3时,执行“case3:n+=k;”得n=3,然后执行default;当k=2时,执行“case2:case3:n+=k”得n=5,然后执行default;当 k=1时,执行“case1:n+=k;case2:case3:n+=k;”使得n加两次k,得到n=7。
转载请注明原文地址:https://kaotiyun.com/show/rqXp777K
0

最新回复(0)