第 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
- 差一。
i < n还是i <= n。相信之前先拿最小的例子(n = 1)手推一遍。 - 多余的分号。
for (...) ;—— 那个;就是空循环体,循环空转,别的什么也没做。 - 死循环。循环体里没有任何东西把条件推向假,它就永不结束。本站的死循环 3 秒被掐断,但在真机器上这个习惯很重要。