C语言中的条件判断(下)-学习笔记-9

引入 switch 语句

上一篇介绍了 if 语句只有两个分支可供选择,而实际问题往往有更多种可能性,虽然 if 语句可以嵌套使用,但整个代码会变得冗长难懂,后期维护成本和修改成本都很高,所以 C 语言提供 swich 语句直接处理多分支选项。

从例题入手了解 switch 语句

我们设计一个程序,当我们输入 A~E 的成绩等级后,返回该等级对应的分数,我们当然可以使用if 语句来写,如果是 A 等级还好,如果是 E 等级,我们需要判断很多次才能知道,如果使用 switch,我们就可以对指定的条件返回指定的内容,哪怕分支再多也可以轻松应对。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(){
char result;
printf("请输入你需要查询的成绩等级:");
scanf("%c",&result);
switch(result){
case 'A':printf("你输入的是%C,成绩约在90分以上!\n",result);break;
case 'B':printf("你输入的是%C,成绩约在80~90分!\n",result);break;
case 'C':printf("你输入的是%C,成绩约在70~79分以上!\n",result);break;
case 'D':printf("你输入的是%C,成绩约在60~69分以上!\n",result);break;
case 'E':printf("你输入的是%C,成绩约在69分以下!\n",result);break;
default:printf("输入错误!\n");break;
}
return 0;
}

程序分析:
我们先声明了一个 char 类型的变量 result 来存放输入的成绩等级,然后我们使用了 switch 语句 将输入的不同等级对应到不同的 printf 输出语句上,如果输入的不是成绩等级的错误信息,switch 提供了一个 default 分支,用于显示没有对应 case 的情况。

switch 语句定义

switch 语句的作用是根据表达式的值,使流程跳转到不同的语句上去执行。

一般形式

switch(表达式){
case 常量1 : 语句1; break;
case 常量2 : 语句2; break;

case 常量n : 语句n; break;
default: 语句n+1;
}

使用说明

1.switch 后面跟的表达式,其值类型必须为整数类型,包含字符型(因为 C 语言中字符被转换成了整数形式)。这里的表达式就是我们下面 case 要对比的内容。

1
2
3
4
5
6
7
8
9
int a;
char c;
switch(a){
case ....;
}
switch(c){
case ....;
}
//上面这两种写法都对,注意,不能是数组或者字符串。

2.switch 的花括号内,由 case 开头,最多一个 default 结尾,default 可以省略,如果 default 省略后,表达式没有与 case 匹配的量,则不执行任何语句。

1
2
3
4
5
6
7
int a;
scanf("%d",&a);
switch(a){
case 6: printf("6回答正确!");break;
case 5: printf("回答错误!");break;
}
//这种不写 default 也是合法的,如果没有匹配 case,则不执行任何语句,跳出 switch 执行下方的语句。

3.case 的出现顺序不影响执行结果,可以先写 default 然后再写 case 也行。

1
2
3
4
5
6
7
8
int a;
scanf("%d",&a);
switch(a){
default:printf("输入的值不对!")
case 6: printf("6回答正确!");break;
case 5: printf("回答错误!");break;
}
//开头先写 default 也可以。

4.每一个 case 的值都不行相同,否则就会出现互相矛盾的情况。

1
2
3
4
5
6
7
int a;
scanf("%d",&a);
switch(a){
case 6 : printf("输入正确!");break;
case 6 : printf("输入错误!");break;
}
//上面的这种输入方式是错误的,因为同样的 case 6 出现了两次,这样会产生矛盾。

5.一般情况下,一个 case 子句后,应当用 break 语句使流程跳出 switch 结构,即终结 switch 语句执行,当然,可以不输入,但会连续执行其下方 case 的语句。

1
2
3
4
5
6
7
int a;
scanf("%d",&a);
switch(a){
case 6 : printf("输入正确!");break;
case 5 : printf("输入错误!");break;
}
//一旦匹配 case 后,执行 break 跳出 switch 结构。

6.多个 case 标号可以使用一组执行语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
switch(a){
case 1:
case 2:
case 3:
case 4:
case 5: printf("输入错误!");break;
case 6: printf("输入正确!");break;
}
return 0;
}
//上面的 case 12345都会沿用case5的这个输入错误的执行语句。

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!