循环——嵌套循环
一、课上练习
习题链接
cturtle库画常用笔颜色:
- 红色:red
- 黄色:yellow
- 蓝色:blue
- 绿色:green
- 灰色:gray
示例代码
画五排五个正方形示例代码
1#include "CTurtle.hpp"
2#include <bits/stdc++.h>
3using namespace std;
4using namespace cturtle;
5
6int main() {
7 // 创建一个画布屏幕
8 TurtleScreen scr;
9 // 创建一个画图图标
10 Turtle turtle(scr);
11
12 int bianshu = 4;
13 int bianchang = 20;
14 double jiaodu = 360.0 / bianshu;
15
16 for (int i = 0; i < 5; ++i) {
17 for (int j = 0; j < 5; ++j) {
18 for (int k = 0; k < bianshu; ++k) {
19 turtle.forward(bianchang);
20 turtle.right(jiaodu);
21 }
22 turtle.forward(bianchang);
23 }
24 turtle.right(jiaodu);
25 turtle.forward(bianchang);
26 turtle.right(jiaodu);
27 turtle.forward(bianchang * 5);
28 turtle.right(jiaodu * 2);
29 }
30
31 // 暂停程序
32 system("pause");
33 // 程序结束
34 return 0;
35}累计相加(Z1009)示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int n;
6 cin >> n;
7 int sum = 0;
8 for (int i = 1; i <= n; ++i) {
9 for (int j = 1; j <= i; ++j) {
10 sum += j;
11 }
12 }
13 cout << sum << endl;
14 return 0;
15}找素数(Z1011)示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int a, b;
6 cin >> a >> b;
7 int count = 0;
8 for (int i = a; i <= b; ++i) {
9 bool flag = true;
10 for (int j = 2; j * j <= i; ++j) {
11 if (i % j == 0) {
12 flag = false;
13 break;
14 }
15 }
16 if (flag) {
17 ++count;
18 }
19 }
20 cout << count << endl;
21 return 0;
22}画三角形(Z1005)示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int n;
6 cin >> n;
7 int count = 0;
8 for (int i = 1; i <= n; ++i) {
9 for (int j = 1; j <= i; ++j) {
10 cout << char(count + 'A');
11 count = (count + 1) % 26;
12 }
13 cout << endl;
14 }
15 return 0;
16}自幂数(Z1012)示例代码
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 int n;
6 cin >> n;
7 for (int i = 1; i <= n; ++i) {
8 int number;
9 cin >> number;
10 int number0 = number;
11 int count = 0;
12 while (number) {
13 ++count;
14 number /= 10;
15 }
16 number = number0;
17 int sum = 0;
18 for (int j = 1; j <= count; ++j) {
19 int now = number % 10;
20 number /= 10;
21 int result = 1;
22 for (int k = 1; k <= count; ++k) {
23 result *= now;
24 }
25 sum += result;
26 }
27 if (sum == number0) {
28 cout << "T" << endl;
29 } else {
30 cout << "F" << endl;
31 }
32 }
33 return 0;
34}二、知识总结
嵌套循环
适用场景
嵌套循环是一种在一个循环内部包含另一个循环的结构,通常用于需要多层次重复处理的场景。
代码示例
打印九九乘法表
1#include <iostream>
2using namespace std;
3
4int main() {
5 for (int i = 1; i <= 9; i++) {
6 for (int j = 1; j <= 9; j++) {
7 cout << i << " * " << j << " = " << i * j << "\t";
8 }
9 cout << std::endl;
10 }
11
12 return 0;
13}注意事项
- 确保每个循环的初始化、条件检查和递增(或递减)部分都正确无误。避免在同一个作用域内使用相同的循环变量名。
- 在嵌套循环中,不要使用相同的循环变量名,以防止变量覆盖问题。
- 在每个循环内使用大括号{}即使循环体只有一行代码。这有助于保持代码结构清晰,避免意外错误。
- 确保每个循环的范围正确,避免超出边界。
- 循环变量的作用域应限定在循环内部,不要在循环外部不必要地使用这些变量。
- 确保循环条件能够正确地终止,避免死循环。
- 在复杂的嵌套循环中,保持代码整洁并添加注释,以提高可读性和可维护性。
嵌套循环中的break和continue
嵌套循环中break和continue依旧是循环控制语句,break可以提前终止循环,continue可以跳过当前循环迭代。但是需要注意的是其只能控制一层循环。
嵌套循环中break和continue示例
1for (int i = 0; i < 10; i++) {
2 for (int j = 0; j < 5; j++) {
3 if (j == 3) {
4 break; // 提前终止内层循环
5 }
6 if (i == 2) {
7 continue; // 跳过当前循环迭代
8 }
9 std::cout << i << ", " << j << std::endl;
10 }
11}