1.switch语句的一般形式switch(表达式)
{ case 常量表达式1:语句组;break;
case 常量表达式2:语句组;break;

case 常量表达式n:语句组;break;
[default:语句组;[break; ]]
}

流程图如下:
\"在这里插入图片描述\"
2.说明(1)执行过程当switch后面\"表达式\"的值,与某个case后面的\"常量表达式\"的值相同时,就执行该case后面的语句(组);
当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。
(2)如果没有任何一个case后面的\"常量表达式\"的值,与\"表达式\"的值匹配,则执行default 后面的语句(组)。然后
,再执行switch语句的下一条。
3.说明(1)switch后面的\"表达式\",可以是int、char和枚举型中的一种。(2)每个case后面\"常量表达式\"的值,必须
各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。(3)case后面的常量
表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以
必须加上break语句,以便结束switch语句。思考题:如果去掉[案例]程序中的所有break语句,且输入的成绩为75,
输出会如何?
(4)各case及default子句的先后次序,不影响程序执行结果。(5)多个case子句,可共用同一语句(组)。例如,在[
案例4.5]中的\"case 10: \"和\"case 9: “共用语句\"printf(“grade=A\\n”); break;”,\"case 5: \"~\"case 0: “共用语
句\"printf(“grade=E\\n”); break;”。(6)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实
现。

[案例] 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,
等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;
score<60,等级为E。

main()
{
int score, grade;
printf(“Input a score(0~100): “);
scanf(”%d”, &score);
grade = score/10; /将成绩整除10,转化成switch语句中的case标号/
switch (grade)
{
case 10:
case 9: printf(“grade=A\\n”); break;
case 8: printf(“grade=B\\n”); break;
case 7: printf(“grade=C\\n”); break;
case 6: printf(“grade=D\\n”); break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: printf(“grade=E\\n”); break;
default: printf(“The score is out of range!\\n”);
}
}
程序运行情况如下:
Input a score(0~100): 85↙
grade=B

收藏 打印