问题详情

有以下程序: #include<stdio.h> main( ) {int c=0,k; for(k=1;k<3;k++) switch(k) {default:c+=k; case2:c++;break; case4:c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是( )。


A、3

B、5

C、7

D、9

时间:2022-01-04 10:03 关键词:

答案解析

A
本题考查了switch开关语句,当表达式与某一个ease后面的常量表达式相等时,就执行case后面的语句,若没有匹配,则执行default后面的语句,各个case和default的出现次序不影响结果,执行完一个case语句,流程就转移到下一个case并继续执行。因此在case的分支后,加break语句来跳出switch语句。当k=1时,switch语句中没有相对应的case,所以执行default语句,此时C为1,没有遇到break语句,则执行case2,c++,此时c的值在下次使用前加1等于2,break跳出。继续for循环,当k=2时,执行Case2,C再次自加值为3,遇到break跳出。当k=3时,不符合循环,则输出c的结果,答案为3。