跳到主要内容

C++ switch..case语句

提示
  1. switch语句的功能:C++中的switch语句允许从多个代码块中选择一个执行,基于一个表达式的值。
  2. 如何工作switch语句首先评估表达式,然后将其与每个case标签的值进行比较。如果匹配,执行相应的代码块,直到遇到break语句。
  3. 与if...else if对比:虽然switch语句可以用if...else if梯子实现相同功能,但switch语法更清晰、易读写。

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

C++ 中的 switch 语句语法是:

switch (expression) {
case constant1:
// 如果表达式等于 constant1,执行的代码
break;

case constant2:
// 如果表达式等于 constant2,执行的代码
break;
.
.
.
default:
// 如果表达式不匹配任何常量,执行的代码
}

switch 语句是如何工作的?

expression 一次评估并与每个 case 标签的值进行比较。

  • 如果有匹配,执行相应标签后的代码。例如,如果变量的值等于 constant2,则执行 case constant2: 后的代码,直到遇到 break 语句
  • 如果没有匹配,执行 default: 后的代码。

注意:我们可以使用 if...else..if 梯形结构完成相同的事情。然而,switch 语句的语法更加清晰,易于阅读和编写。

switch 语句的流程图

C++ switch...case 流程图

示例:使用 switch 语句创建计算器

// 使用 switch 语句构建简单计算器的程序
#include <iostream>
using namespace std;

int main() {
char oper;
float num1, num2;
cout << "输入一个运算符 (+, -, *, /): ";
cin >> oper;
cout << "输入两个数字: " << endl;
cin >> num1 >> num2;

switch (oper) {
case '+':
cout << num1 << " + " << num2 << " = " << num1 + num2;
break;
case '-':
cout << num1 << " - " << num2 << " = " << num1 - num2;
break;
case '*':
cout << num1 << " * " << num2 << " = " << num1 * num2;
break;
case '/':
cout << num1 << " / " << num2 << " = " << num1 / num2;
break;
default:
// 运算符不匹配任何案例常量 (+, -, *, /)
cout << "错误!运算符不正确";
break;
}

return 0;
}

输出 1

输入一个运算符 (+, -, *, /): +
输入两个数字:
2.3
4.5
2.3 + 4.5 = 6.8

输出 2

输入一个运算符 (+, -, *, /): -
输入两个数字:
2.3
4.5
2.3 - 4.5 = -2.2

输出 3

输入一个运算符 (+, -, *, /): *
输入两个数字:
2.3
4.5
2.3 * 4.5 = 10.35

输出 4

输入一个运算符 (+, -, *, /): /
输入两个数字:
2.3
4.5
2.3 / 4.5 = 0.511111

输出 5

输入一个运算符 (+, -, *, /): ?
输入两个数字:
2.3
4.5
错误!运算符不正确。

在上述程序中,我们使用 switch...case 语句执行加法、减法、乘法和除法。

程序如何工作

  1. 我们首先提示用户输入所需的运算符。然后,这个输入被存储在名为 oper 的 char 变量中。

  2. 然后我们提示用户输入两个数字,存储在 float 变量 num1 和 num2 中。

  3. 接着使用 switch 语句检查用户输入的运算符:

    3.1 如果用户输入 +,对数字进行加法运算。 3.2 如果用户输入 -,对数字进行减法运算。 3.3 如果用户输入 *,对数字进行乘法运算。 3.4 如果用户输入 /,对数字进行除法运算。 3.5 如果用户输入任何其他字符,打印默认代码。

注意每个 case 块内都使用了 break 语句。这终止了 switch 语句。

如果不使用 break 语句,正确的 case 后的所有情况都会被执行。