C++ 基础语法 - 2 分支结构
分支结构
分支结构是指根据条件选择不同路径执行代码的结构。通过分支结构,程序可以根据不同的情况执行不同的代码。
通俗一点讲,就是程序在遇到这个情况下要这么做,但在另一种情况下要那么做,这样就很好理解了。
分支结构有两种写法,一种是 if 语句,另一种是 switch 语句。由于 if 语句 更灵活、能处理的 范围更广、更 易于理解,我将着重讲解 if 语句的写法。
2.1 if 语句
if 语句中的写法大致如下:
if (condition) {
// 当条件为真时执行的代码
} else if (another_condition) {
// 当另一个条件为真时执行的代码
} else {
// 当以上条件都不为真时执行的代码
}
你可以很简单地把它背下来。if
是如果的意思,else
是否则的意思,那 else if
就是否则如果的意思。
在代码的注释中,我提到了”条件为真“,条件为真指的是在编程中条件表达式的计算结果为真(true)或假(false)。如果这个条件表达式成立,那他会返回 true;如果这个条件表达式不成立,那他会返回 false。
一些很简单的例子:当语句为 if (1 > 2)
的时候,那一定是返回假的;当语句为 if (10 > 9)
的时候,那一定是返回真的。
2.2 比较运算符
比较运算符用于比较两个值之间的关系,常见的比较运算符包括:
相等 | 不相等 | 大于 | 小于 | 大于等于 | 小于等于 |
---|---|---|---|---|---|
== |
!= |
> |
< |
>= |
<= |
让我们来用题目举例子。
题目描述
小 A 在给数字分类时遇到了困难,他会得到一个整数 $x$ $(0\le x\le 150)$,如果 $x = 10$,他要把它分类到
ten
这个箱子中;如果 $x\le 9$,他要把它分类到small
这个箱子中;如果 $x\ge 100$ 时,他要把它分类到big
这个箱子中;否则他将把数字分类到other
箱子。你的任务是,接收这个整数,然后输出它应该被分类到哪个箱子。
输入格式
一行,一个整数 $x$。
输出格式
一行,这个整数应该被分类到的箱子的名字。
对于这道题,我们可以用 if 语句配合比较运算符编写出 C++ 程序。这是一个简单的示例:
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
if (x == 10) {
cout << "ten" << endl;
} else if (x <= 9) {
cout << "small" << endl;
} else if (x >= 100) {
cout << "big" << endl;
} else {
cout << "other" << endl;
}
return 0;
}
2.3 逻辑运算符
通过比较运算符,我们已经可以写一些程序来完成一些简单的问题了。不过如果我们想完成一些更复杂的问题,比如判断 $x$ 是不是在 $200$ 到 $300$ 这个区间时,只用比较运算符就会很麻烦了。当然了,像 if (200 <= x <= 300)
这样的语句显然是 错误的,这时候我们就要使用逻辑运算符了。
逻辑运算符用于组合多个条件,常见的逻辑运算符包括:
与 | 或 | 非 |
---|---|---|
&& |
|| |
! |
如何理解这三个运算符的含义呢:
-
与运算:当两个条件同时为真时,与运算结果为真;否则为假。例如,命题 A && B 表示只有当命题 A 和命题 B 同时为真时,整个表达式才为真。
-
或运算:表示至少一个成立。当两个条件中至少有一个为真时,或运算结果为真;只有当两个条件都为假时,结果才为假。例如,命题 A || B 表示只要命题 A 或命题 B 中有一个为真,整个表达式就为真。
-
非运算:表示取反。对一个命题进行非运算,即取其相反命题的真值。例如,!A 表示当命题 A 为假时,!A 为真;当命题 A 为真时,!A 为假。
了解了这些,你就可以使用 if 语句处理一些更复杂的问题了。
让我们举一些例子:判断整数 $x$ 是否在 $100$ 到 $200$ 这个范围时,我们可以用与运算 if(x>=100 && x<=200)
来做;判断整数 $x$ 是不是 $11$ 或 $3$ 的倍数时,我们可以用或运算 if(x%11==0 != x%3==0)
来做;当判断 $a$ 是否与 $b$ 不相等时,我们既可以用 if(a != b)
做,也可以用 if(!(a == b))
来做。
2.4 switch 语句
switch 语句的写法:
switch (expression) {
case value1:
// 当 expression 等于 value1 时执行的代码
break;
case value2:
// 当 expression 等于 value2 时执行的代码
break;
// 可以有更多的 case
default:
// 如果 expression 不等于任何一个 case 的值时执行的代码
break;
}
switch 语句的优势在于结构清晰,当需要根据一个变量的不同取值来执行不同的代码块时,switch 语句可以提供更清晰、简洁的结构。