一个循环内另一个循环称为嵌套循环。让我们举个例子,
假设我们想连续 3 周每天都循环一次。
为了实现这一点,我们可以创建一个循环迭代三次(3 周)。然后在循环内部,我们可以创建另一个循环迭代 7 次(7 天)。这就是我们可以使用嵌套循环的方式。
示例:嵌套 for 循环
// C++ program to display 7 days of 3 weeks
#include <iostream>
using namespace std;
int main() {
int weeks = 3, days_in_week = 7;
for (int i = 1; i <= weeks; ++i) {
cout << "Week: " << i << endl;
for (int j = 1; j <= days_in_week; ++j) {
cout << " Day:" << j << endl;
}
}
return 0;
}
输出
Week: 1 Day:1 Day:2 Day:3 ... .. ... Week: 2 Day:1 Day:2 Day:3 ... ... ..
我们可以用 while 和 do...while 以类似的方式创建嵌套循环。
示例:显示图案
// C++ program to display a pattern
// with 5 rows and 3 columns
#include <iostream>
using namespace std;
int main() {
int rows = 5;
int columns = 3;
for (int i = 1; i <= rows; ++i) {
for (int j = 1; j <= columns; ++j) {
cout << "* ";
}
cout << endl;
}
return 0;
}
输出
* * * * * * * * * * * * * * *
在此程序中,外层循环从 1
迭代到 rows。
内层循环从 1
迭代到 columns。在内层循环中,我们打印字符 '*'
。
嵌套循环中的 break 和 continue
当我们在内层循环中使用 break 语句时,它会终止内层循环,但不会终止外层循环。例如,
示例:嵌套循环内的 break
#include <iostream>
using namespace std;
int main() {
int weeks = 3, days_in_week = 7;
for (int i = 1; i <= weeks; ++i) {
cout << "Week: " << i << endl;
for (int j = 1; j <= days_in_week; ++j) {
// break during the 2nd week
if (i == 2) {
break;
}
cout << " Day:" << j << endl;
}
}
}
输出
Week: 1 Day:1 Day:2 ... .. ... Week: 2 Week: 3 Day:1 Day:2 ... .. ...
此程序在 i 的值为 2
时不运行内层循环,即不打印第二周的日期。打印周的外层循环不受影响。
类似地,当我们使用 continue 语句在内层循环中时,它只跳过内层循环的当前迭代。外层循环不受影响。例如,
示例:嵌套循环内的 continue
#include <iostream>
using namespace std;
int main() {
int weeks = 3, days_in_week = 7;
for (int i = 1; i <= weeks; ++i) {
cout << "Week: " << i << endl;
for (int j = 1; j <= days_in_week; ++j) {
// continue if the day is an odd number
if (j % 2 != 0) {
continue;
}
cout << " Day:" << j << endl;
}
}
}
输出
Week: 1 Day:2 Day:4 Day:6 Week: 2 Day:2 Day:4 Day:6 Week: 3 Day:2 Day:4 Day:6
此程序仅打印偶数日。
每当 days_in_week 是奇数时,continue
语句会跳过内层循环的该迭代。