第 4 课

循环

一句话答案:循环把一段代码重复执行,直到条件说停。知道要跑几次就用 for;不知道就用 while。

for:三部分,一行写完

for (起点; 条件; 步进) 读作:先设置,每趟之前测试,每趟之后前进。

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += i;
    }
    cout << "sum = " << sum << endl;
    return 0;
}

n = 5 时是 1+2+3+4+5 = 15。在输入框里改 n。这个形状就是从 1 加到 N。

while:次数未知时用

把数字一位位剥下来,是 while 的完美场景:你事先不可能知道有几位。

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int digits = 0;
    while (n > 0) {
        n /= 10;      // 剥掉最后一位
        digits++;
    }
    cout << "digits = " << digits << endl;
    return 0;
}

那个 n /= 10 就是整数除法在做剥离 —— 第 2 课的同一条规则。

嵌套循环:行与列

#include <iostream>
using namespace std;

int main() {
    for (int row = 1; row <= 3; row++) {
        for (int col = 1; col <= 4; col++) {
            cout << "(" << row << "," << col << ") ";
        }
        cout << endl;
    }
    return 0;
}

外层每走一趟,内层就完整跑完一遍。这台机器就是星号金字塔和乘法表背后的原理。

三个 bug

配套练习

下面这几道题练的正是刚讲的内容: