赋值和分支

赋值

赋值是各种编程语言中最常见的一种操作。那么什么是赋值呢?就是让一个变量的值变成我们想要的那个值。看看下面这个例子:

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    cin >> a;
    b = 42;
    cout << a + b << endl;
}

这里第 7 行就是赋值操作了。它做的就是让 b 的值变成 42 。所以这段程序实际上就是把输入加上 42 之后再输出出来。

你会发现赋值的写法并不复杂,只需要用一个等号 = :等号左边可以放一个变量,右边可以放我们想要赋给这个变量的东西,最后再加上一个分号就可以了。实际上,等号右边可以是一个数、一个变量,甚至一个简单的式子。比如最初的加法计算程序可以写成这样:

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    int c{0};
    cin >> a >> b;
    c = a + b;
    cout << c << endl;
}

与上次不同的是,我多定义了一个整数变量,它的名字叫做 c 。然后输入完 ab 以后,执行这样的赋值操作:将 a + b 这个简单的式子的值赋给 c 。也就是说,从此开始 c 的值不再是 0 了,而是 ab 的和。然后输出 c ,就能得到我们想要的结果。

赋值尽管长得像一个等式,但它并不是等式的含义。请看下面这个例子:

#include <iostream>
using namespace std;
int main() {
    int a{0};
    cin >> a;
    a = a + 42;
    cout << a << endl;
}

这个例子实际上和本节第一段代码是等价的。它接受一个整数输入,然后输出这个整数加上 42 的结果。这是因为,第 6 行的赋值是这样操作的:将 a + 42 这个简单的式子的结果作为变量 a 的新的值。因此尽管 a = a + 42 并不是一个数学上有意义的式子,但是是一个完全正确且将来经常会用到的一种赋值操作。

分支

现在还是加法程序,我想再加点花样。我想让两个数的和不超过 100;如果超过 100 的话就输出 100 。这件事情该怎么完成呢?

显然目前所学貌似很难实现这样的功能。因此我将介绍“分支”这个概念。废话不多说,上代码:

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    int c{0};
    cin >> a >> b;
    c = a + b;
    if (c > 100) {
        c = 100;
    }
    cout << c << endl;
}

你会发现这段代码跟之前比多了 9 ~ 11 这三行。它是你从没有见过的,下面我来向你解释一下。 if 这个单词是“如果”的意思;后面小括号里面是一个数学上我们都见过的话,就是 c 大于 100 。那么这一行可以直接简单解释为“如果 c 大于 100 的话……”。接下来是一对大括号,大括号里面就是第 10 行,刚刚学过的,是一个赋值操作。那么整体就简单解释为“如果 c 大于 100 的话,那么就做这个赋值操作——把 c 的值变成 100

所以说,这就满足了我们的目标:如果 c 大于 100 ,就让 c 变成 100 ;否则就什么都不用做。这种操作就叫做分支。

总结下来,分支的写法长成这样:

if ( 条件 ) {
    如果条件成立就做的一些事情
}

提示

本书中,蓝色字体是“占位符”,即表明这里应该放什么。——比如这里的“条件”二字指在括号里面应该放上分支的条件,而不是把“条件”两个字写在那里。

这里的 条件 可以是一个大于号 > 、小于号 < 、大于等于 >= 或者小于等于 <= 构成的式子,比如 a < 3 指变量 a 的值小于 3a >= b 指变量 a 的值需要大于或者等于变量 b 的值(简单说叫做“不小于”)。你可能还需要记住不等于写成 != ,同时等于写成 == 。比如 a != 3 表示变量 a 的值不为 3

注意

注意等于号 == 与赋值的符号 = 的区别!

所谓 如果条件成立就做的一些事情 可以是任何我们学过的事情,比如输入输出、声明并定义变量,或者做赋值操作。所以看看这个例子——你能自己弄明白它想要表达的意思吗?试试看!

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    cin >> a >> b;
    if (a > b) {
        cout << "a - b is positive!" << endl;
    }
    if (a < b) {
        cout << "a - b is negative!" << endl;
    }
}

这段代码是说,输入两个数 ab ,然后判断 a - b 这个式子的结果的正负。如果这个式子结果是个正数,那么就输出 a - b is positive! ;如果是个负数就输出 a - b is negative! 。……啊,我们好像忘记了是零的情况。因此我在这里介绍一下分支的“否则”。

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    cin >> a >> b;
    if (a > b) {
        cout << "a - b is positive!" << endl;
    } else {
        cout << "a - b is not positive!" << endl;
    }
}

注意这里在第一个分支的结尾多了一个 else 。它的意思就是我们平常说的“否则”,那么我相信你能够理解这段代码:“如果 a 大于 b ,那么输出 a - b is positive! ;否则(就是 a 不大于 b ,小于等于 b )就输出 a - b is not positive! 。”你可以亲自试试这段代码,看看编译运行的效果如何。

练习

  1. 编写这样一个程序,输入两个整数,输出它们较大的那个。
  2. 一个学生是否及格是由他的成绩(保证是整数)决定的。如果成绩大于等于 60 ,则这个学生是及格的,否则就是不及格的。请编写一个程序,输入一个成绩,输出这个学生是否及格——及格输出 YES ,不及格输出 NO
  3. 在上一题的基础上,现在有这样的新评分标准:如果学生的缺勤次数超过 3 次,则学生在原成绩的基础上扣掉 5 分。现在编写一个程序,输入学生的原成绩和缺勤次数,输出这个学生是否及格。若及格,另起一行输出这个学生现在的成绩。

练习参考答案

#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    cin >> a >> b;
    if (a > b) {
        cout << a << endl;
    } else {
        cout << b << endl;
    }
}
#include <iostream>
using namespace std;
int main() {
    int a{0};
    cin >> a;
    if (a >= 60) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }
}
#include <iostream>
using namespace std;
int main() {
    int a{0};
    int b{0};
    cin >> a >> b;
    if (b > 3) {
        a = a - 5;
    }
    if (a >= 60) {
        cout << "YES" << endl << a << endl;
    } else {
        cout << "NO" << endl;
    }
}
最近更新:
代码未运行