跳转至

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 语句可以提供更清晰、简洁的结构。