C语言switch case用法举例
C语言中的 switch case 语句是一种强大的控制流结构,它允许我们根据一个表达式的值执行不同的代码块。这种结构特别适合处理多个可能的条件,比起使用多个 if else 语句,switch case 通常更加清晰和高效。
switch case 语句的基本语法如下:
switch (expression) {
case constant1:
// 代码块 1
break;
case constant2:
// 代码块 2
break;
// 更多 case
default:
// 默认代码块
}
让我们通过一个简单的例子来理解 switch case 的用法。假设我们要根据用户输入的数字(1-7)来输出对应的星期几:
#include <stdio.h>
int main() {
int day;
printf("请输入一个数字 (1-7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default:
printf("无效的输入!请输入 1-7 之间的数字。\n");
}
return 0;
}
在这个例子中,我们使用 switch 语句根据用户输入的数字选择相应的 case,每个 case 后面跟着一个常量值,当 switch 表达式的值与某个 case 的常量相匹配时,就会执行该 case 下的代码。
值得注意的是,每个 case 后面都有一个 break 语句。break 语句的作用是跳出 switch 结构,防止程序继续执行下一个 case。如果我们忘记了 break,程序就会继续执行下一个 case,这种情况称为 "fall through"。
default 子句是可选的,它用于处理所有 case 都不匹配的情况。在我们的例子中,如果用户输入的不是 1-7 之间的数字,就会执行 default 子句。
让我们看一个稍微复杂一点的例子,展示如何利用 switch case 的 "fall through" 特性:
#include <stdio.h>
int main() {
char grade;
printf("请输入你的成绩 (A, B, C, D 或 F): ");
scanf(" %c", &grade);
switch (grade) {
case 'A':
case 'a':
printf("优秀!\n");
break;
case 'B':
case 'b':
printf("良好!\n");
break;
case 'C':
case 'c':
printf("中等。\n");
break;
case 'D':
case 'd':
printf("及格。\n");
break;
case 'F':
case 'f':
printf("不及格。\n");
break;
default:
printf("无效的成绩!\n");
}
return 0;
}
在这个例子中,我们利用了 "fall through" 特性来处理大小写字母,例如,'A' 和 'a' 都会执行相同的代码块。这是因为 'A' 的 case 没有 break 语句,所以程序会继续执行下一个 case('a')的代码。
switch case 语句在处理多个离散值时非常有用,尤其是当这些值是整数或字符时。然而,它也有一些限制:
- case 标签必须是常量表达式,不能是变量或范围。
- switch 表达式必须是整数类型(包括 char)。
- 不能在 case 中声明变量。
尽管有这些限制,switch case 仍然是一个非常有用的控制结构,能够使代码更加清晰和易于理解。在处理多个条件时,它通常比一连串的 if else 语句更加高效和易读。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。