030. 使用switch语句处理多个条件
在C语言中,switch
语句是一种用于处理多个条件的控制结构。它允许根据变量的值选择执行不同的代码块。switch
语句通常比多个if-else if
语句更清晰、更易于维护,尤其是在处理多个离散值时。
语法
switch
语句的基本语法如下:
switch (expression) {
case constant1:
// 代码块1
break;
case constant2:
// 代码块2
break;
// 可以有多个 case
default:
// 默认代码块
}
-
expression
:一个整数表达式或枚举类型。 -
case constant
:每个case
后面跟着一个常量值,表示一个条件分支。 -
break
:用于退出switch
语句,防止代码继续执行到下一个case
。 -
default
:可选的默认分支,当所有case
都不匹配时执行。
示例1:基本的switch
语句
以下是一个简单的示例,根据用户输入的数字打印不同的消息。
#include <stdio.h>
int main() {
int choice;
printf("Enter a number (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("You entered 1.\n");
break;
case 2:
printf("You entered 2.\n");
break;
case 3:
printf("You entered 3.\n");
break;
default:
printf("Invalid input.\n");
}
return 0;
}
输出结果
假设用户输入2
,输出结果为:
Enter a number (1-3): 2
You entered 2.
示例2:处理字符输入
switch
语句也可以用于处理字符类型。以下是一个示例,根据用户输入的字符打印不同的消息。
#include <stdio.h>
int main() {
char grade;
printf("Enter your grade (A, B, C, D, F): ");
scanf(" %c", &grade); // 注意前面的空格,用于跳过前面的换行符
switch (grade) {
case 'A':
printf("Excellent!\n");
break;
case 'B':
printf("Good job!\n");
break;
case 'C':
printf("Keep working!\n");
break;
case 'D':
printf("You passed.\n");
break;
case 'F':
printf("Failed.\n");
break;
default:
printf("Invalid grade.\n");
}
return 0;
}
输出结果
假设用户输入B
,输出结果为:
Enter your grade (A, B, C, D, F): B
Good job!
示例3:处理枚举类型
switch
语句也可以用于处理枚举类型。以下是一个示例,根据用户选择的菜单项执行不同的操作。
#include <stdio.h>
enum MenuOption {
OPTION_ADD,
OPTION_SUBTRACT,
OPTION_MULTIPLY,
OPTION_DIVIDE,
OPTION_EXIT
};
int main() {
int choice;
printf("Enter your choice:\n");
printf("1. Add\n");
printf("2. Subtract\n");
printf("3. Multiply\n");
printf("4. Divide\n");
printf("5. Exit\n");
scanf("%d", &choice);
switch (choice) {
case OPTION_ADD:
printf("You chose Add.\n");
break;
case OPTION_SUBTRACT:
printf("You chose Subtract.\n");
break;
case OPTION_MULTIPLY:
printf("You chose Multiply.\n");
break;
case OPTION_DIVIDE:
printf("You chose Divide.\n");
break;
case OPTION_EXIT:
printf("Exiting program.\n");
break;
default:
printf("Invalid choice.\n");
}
return 0;
}
输出结果
假设用户输入3
,输出结果为:
Enter your choice:
1. Add
2. Subtract
3. Multiply
4. Divide
5. Exit
3
You chose Multiply.
示例4:使用switch
语句处理多个条件
以下是一个示例,根据用户输入的月份打印对应的季节。
#include <stdio.h>
int main() {
int month;
printf("Enter a month (1-12): ");
scanf("%d", &month);
switch (month) {
case 12:
case 1:
case 2:
printf("Winter\n");
break;
case 3:
case 4:
case 5:
printf("Spring\n");
break;
case 6:
case 7:
case 8:
printf("Summer\n");
break;
case 9:
case 10:
case 11:
printf("Autumn\n");
break;
default:
printf("Invalid month.\n");
}
return 0;
}
输出结果
假设用户输入7
,输出结果为:
Enter a month (1-12): 7
Summer
注意事项
break
语句:每个case
块后面通常使用break
语句,以防止代码继续执行到下一个case
。如果省略break
,代码会继续执行到下一个case
,直到遇到break
或switch
语句结束。default
分支:default
分支是可选的,但建议始终包含,以处理所有未匹配的情况。- 表达式的类型:
switch
语句的表达式必须是整数类型(如int
、char
、enum
等)。
通过上述示例,你可以看到如何在C语言中使用switch
语句处理多个条件:
- 定义
switch
语句:根据表达式的值选择执行不同的代码块。 - 使用
case
:每个case
后面跟着一个常量值,表示一个条件分支。 - 使用
break
:在每个case
块后面使用break
,以防止代码继续执行到下一个case
。 - 使用
default
:处理所有未匹配的情况。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)