循环嵌套¶
基本语法¶
循环里面,再放一个循环,叫作循环嵌套,也称多重循环。
输出:
外层执行一轮,内层从头到尾执行一遍。
i 管行,j 管列。第一行时,j 依次是 1、2、3;第二行,又重新从 1 开始。
总共输出 2 × 3 = 6 个星号,不是 2 + 3 个。
观察执行顺序¶
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 3; j++) {
cout << '(' << i << ',' << j << ") ";
}
cout << '\n';
}
输出:
i 暂时不变,j 先走完;之后 i 增加,j 重新开始。
内层的次数,也可以由外层变量决定。
输出:
一共输出 1 + 2 + 3 = 6 个星号,不是 9 个。要看每轮实际执行几次,不能只看有几层循环。
换行的位置¶
一行输出完,再换行。 换行写在内层循环后面,外层循环里面。
放进内层循环,会变成一个星号一行;放到外层循环外面,就会把所有星号挤在同一行。
break 在嵌套循环中的作用¶
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 3; j++) {
if (j == 2) {
break;
}
cout << i << ',' << j << ' ';
}
}
输出 1,1 2,1。
break 只跳出内层循环,外层还会继续。 下一轮进入内层时,j 又从 1 开始。
continue 也只影响它所在的那一层循环,不会直接开始下一轮外层循环。
常见错误¶
内外层,不要误用同一个循环变量。
外层用 i,内层用 j,再一层用 k,先保持一致。
看清内层的起点和终点。
从 1、i、i+1 开始,表示的选择范围不同;j <= n 和 j <= i,执行次数也不同。
注意大括号和缩进。
一层一层对齐,才能看清换行、判断、变量更新,分别属于哪一层。