目录
1.switch 语句的一般形式及解析
2.switch 语句的常见用途
1.switch 语句的一般形式
switch语句的一般形式:
switch(表达式)
{
case 常量1: 语句1
case 常量1: 语句1
...
case 常量n: 语句n
default: 语句n+1
}
解析:
表达式 其值的类型应为整数类型(包括字符型)。
花括号 内是一个 复合语句 。这个 复合语句 包括若干语句,它是 switch语句 的 语句体 。语句体 内包含多个以 关键字case 开头的语句行和最多一个以 default 开头的行。 case 后面跟一个常量(或常量表达式),如: case ‘A’ ,它们和 default 都是起标号(label或称标签、标记)的作用,用来标志一个位置。执行 switch语句 时,先计算switch后面的 “表达式” 的值,然后将它与各 case 标号比较,如果与某一个case标号中的 常量 相同,流程就转到此 case标号 后面的语句。如果没有与 switch表达式 相匹配的case常量,流程转去执行 default标号 后面的语句。
default 标号 可以不存在,此时如果没有与 switch表达式 相匹配的 case常量 ,则不执行任何语句,流程转到switch语句的 下一个语句 。
case标号 出现次序 不影响 执行结果。且case标号只起 标号作用。
case常量 必须 互不相同 ,否则就会出现互相矛盾的现象。
多个case标号 可共用一组执行语句,例:
switch(表达式)
{
case 'A':
case 'B':
case 'C': printf("我们共用了一组执行语句");
...
}
2.switch 语句的常见用途
温馨提醒:switch语句中的表达式只能是byte、short、char、int类型的值
常见用途之成绩查询:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char grade = 0;
printf("请输入您的评级(A-E)!\n");
scanf("%c", &grade);
switch (grade)
{
case 'A':printf("您的成绩在90 - 100范围内\n"); break;
case 'B':printf("您的成绩在80 - 89\n"); break;
case 'C':printf("您的成绩在70 - 79\n"); break;
case 'D':printf("您的成绩在60 - 69\n"); break;
case 'E':printf("您的成绩在小于60\n"); break;
default: printf("输入错误!\n");
}
return 0;
}
输入 E 以后的结果:
输入 A - E 之外内容的结果: