跳到主要内容

C 语言switch语句

提示
  1. switch语句的功能switch语句允许在多个代码块中选择一个来执行,比使用if...else..if阶梯更易于阅读和编写。
  2. switch语句的工作原理:计算一次表达式并将其与每个case标签的值进行比较,若匹配则执行对应的语句,直到遇到break;若无匹配,则执行default部分的语句。
  3. switch语句示例应用:使用switch语句创建简单计算器,根据用户输入的运算符(+、-、*、/)和操作数来执行相应的数学运算。

switch语句允许我们在多个选项中执行一个代码块。

您可以用if...else..if梯形结构做同样的事情。然而,switch语句的语法更易于阅读和编写。

switch...case的语法

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

case 常量2:
// 语句
break;
.
.
.
default:
// 默认语句
}

switch语句是如何工作的?

表达式被求值一次,并与每个case标签的值进行比较。

  • 如果有匹配,执行匹配标签后的相应语句。例如,如果表达式的值等于constant2,则执行case constant2:后的语句,直到遇到break
  • 如果没有匹配,执行默认语句。

注意事项:

  • 如果我们不使用break语句,匹配标签后的所有语句也将被执行。
  • switch语句内的default子句是可选的。

switch语句流程图

switch语句的流程图

示例:简单计算器

// 程序创建一个简单计算器
#include <stdio.h>

int main() {
char operation;
double n1, n2;

printf("输入一个运算符(+, -, *, /): ");
scanf("%c", &operation);
printf("输入两个操作数: ");
scanf("%lf %lf",&n1, &n2);

switch(operation)
{
case '+':
printf("%.1lf + %.1lf = %.1lf",n1, n2, n1+n2);
break;

case '-':
printf("%.1lf - %.1lf = %.1lf",n1, n2, n1-n2);
break;

case '*':
printf("%.1lf * %.1lf = %.1lf",n1, n2, n1*n2);
break;

case '/':
printf("%.1lf / %.1lf = %.1lf",n1, n2, n1/n2);
break;

// 运算符不匹配任何case常量 +, -, *, /
default:
printf("错误!运算符不正确");
}

return 0;
}

输出

输入一个运算符(+, -, *, /: -
输入两个操作数: 32.5
12.4
32.5 - 12.4 = 20.1

用户输入的-运算符存储在operation变量中。两个操作数32.5和12.4分别存储在n1和n2变量中。

由于operation是-,程序的控制权跳转到

printf("%.1lf - %.1lf = %.1lf", n1, n2, n1-n2);

最后,break语句终止了switch语句。