switch 语句
测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用 switch 语言实现
switch 可以支持数据类型:
- int
- 枚举类型
- char 类型
switch 和 if 区别:
- 需要根据布尔条件来执行不同的代码块,则应使用 if 语句
- 需要根据表达式的值来执行不同的代码块,则应使用 switch 语句
语法格式:
c
switch (expression) {
case value1:
// 代码块 1
break;
case value2:
// 代码块 2
break;
default:
// 代码块 3
}
案例需求:输入 int 类型的数据,根据结果输出不同的内容
- 输入 1:输出 Monday
- 输入 2:输出 Tuesday
- 输入 3:输出 Wednesday
- 输入 4:输出 Thursday
- 输入 5:输出 Friday
- 输入 6:输出 Saturday
- 输入 7:输出 Sunday
- 输入其它:输出 error
示例代码:
c
#include <stdio.h>
int main() {
// 1. 定义变量保存数据
int i;
// 2. 输入数据
printf("请输入 1~7 的数字:");
scanf("%d", &i);
// 3. 使用 switch 根据数据不同输出不同的结果
switch (i) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("error\n");
}
return 0;
}
分支综合案例
案例需求:
- 输入:年份(整数)和月份(整数)
- 输出:该月份的天数(整数)
思路分析:
1. 定义变量保存年份、月份、天数
2. 输入年份和月份
3. 根据月份输出天数
- 1、3、5、7、8、10、12 月 31 天
- 4、6、9、11 月 30 天
- 2 月 非闰年 28 天 闰年 29 天
闰年判断:能被 4 整除,但不能被 100 整除的;或者能被 400 整除的年份
示例代码:
c
#include <stdio.h>
int main() {
// 1. 定义变量保存年份、月份、天数
int year, month, day;
// 2. 输入年份和月份
scanf("%d %d", &year, &month);
// 3. 根据月份输出天数
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
// 2 月 非闰年 28 天 闰年 29 天
// 闰年判断:能被 4 整除,但不能被 100 整除的;或者能被 400 整除的年份
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
day = 29;
} else {
day = 28;
}
break;
default:
day = -1;
}
printf("%d 年 %d 月 有 %d 天\n", year, month, day);
return 0;
}