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笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。