第十二章:C++ switch..case 语句
在此篇教程中,我们将借助一些示例程序来了解 switch 语句及其在 C++ 编程中的工作过程。
switch
语句允许我们在许多备选条件中执行一个代码块。
C++中switch
语句的语法是:
switch (expression) {
case constant1:
// 如果要执行的代码
// 表达式expression等于constant1
break;
case constant2:
// 如果要执行的代码
// 表达式expression等于constant2
break;
.
.
.
default:
// 如果要执行的代码
// 表达式(expression)不匹配任何常量(constant)
}
switch 语句是如何工作的?
该 expression
被判断一次并与每个 case
标签的值 constant
进行比较。
- 如果有匹配,则执行匹配标签后的相应代码。例如,如果变量的值等于
constant2
,则执行case constant2:
之后的代码,直到遇到break 语句。 - 如果没有匹配,则执行
default:
之后的代码。
Note: 我们也可以用 if...else...if
搭阶梯的形式做同样的事情。然而,switch
语句的语法更简洁,更易于阅读和编写。
switch 语句流程图
C++ switch…case语句的流程图
示例:使用 switch 语句创建计算器
// 用switch语句构建简单计算器的程序
#include <iostream>
using namespace std;
int main() {
char oper;
float num1, num2;
cout << "Enter an operator (+, -, *, /): ";
cin >> oper;
cout << "Enter two numbers: " << 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:
// 运算符不匹配任何case常量 (+, -, *, /)
cout << "错误! 你输入的计算符不正确";
break;
}
return 0;
}
输出 1:
Enter an operator (+, -, *, /): + Enter two numbers: 2.3 4.5 2.3 + 4.5 = 6.8
输出 2:
Enter an operator (+, -, *, /): - Enter two numbers: 2.3 4.5 2.3 - 4.5 = -2.2
输出 3:
Enter an operator (+, -, *, /): * Enter two numbers: 2.3 4.5 2.3 * 4.5 = 10.35
输出 4:
Enter an operator (+, -, *, /): / Enter two numbers: 2.3 4.5 2.3 / 4.5 = 0.511111
输出 5:
Enter an operator (+, -, *, /): ? Enter two numbers: 2.3 4.5 错误! 你输入的计算符不正确.
在上面的程序中,我们使用 switch...case
语句来执行加法、减法、乘法和除法。
那么该程序如何运作的呢?
- 我们首先提示用户输入所需的运算符。然后将此输入存储在名为
oper
的char
类型的变量中。 - 然后我们提示用户输入两个数字,它们存储在浮点(float)类型的变量num1和num2中。
- 然后使用
switch
语句检查用户输入的运算符:- 如果用户输入
+
,则对数字执行加法。 - 如果用户输入
-
,则对数字执行减法。 - 如果用户输入
*
,则对数字进行乘法运算。 - 如果用户输入
/
,则对数字进行除法。 - 如果用户输入任何其他字符,则打印 default 后的代码。
- 如果用户输入
请注意:以上在每个 case 块中都使用了 break 语句。这将终止 switch 语句。
如果不使用 break 语句,则执行正确 case 之后的所有 case。
程序算法实验室 zhangJA-Lab