循环——for循环结构
一、课上练习
编程练习
示例代码
for循环画正十六边形代码示例
1// for循环画正16边形代码
2#include "CTurtle.hpp"
3#include <bits/stdc++.h>
4using namespace std;
5using namespace cturtle;
6
7int main() {
8 // 创建一个画布屏幕
9 TurtleScreen scr;
10 // 创建一个画图图标
11 Turtle turtle(scr);
12
13 int bianshu = 16;
14 int bianchang = 20;
15 double jiaodu = 360.0 / bianshu;
16
17 for (int i = 0; i < bianshu; ++i) {
18 turtle.forward(bianchang);
19 turtle.right(jiaodu);
20 }
21
22 // 暂停程序
23 system("pause");
24 // 程序结束
25 return 0;
26}17倍数的求和代码示例
1#include <bits/stdc++.h>using namespace std;
2
3int main() {
4 int m, n;
5 cin >> m >> n;
6 int sum = 0;
7 for (int i = m; i <= n; ++i) {
8 if (i % 17 == 0) {
9 sum += i;
10 }
11 }
12 cout << sum << endl;
13 return 0;
14}鸡兔同笼问题代码示例
1#include <bits/stdc++.h>using namespace std;
2
3int main() {
4 for (int ji = 1; ji <= 50; ++ji) {
5 int tu = 50 - ji;
6 if (ji * 2 + tu * 4 == 160) {
7 cout << ji << " " << tu << endl;
8 break;
9 }
10 }
11 return 0;
12}输出偶数和奇数之和代码示例
1#include <bits/stdc++.h>using namespace std;
2
3int main() {
4 int n;
5 cin >> n;
6 int sum1 = 0;
7 int sum2 = 0;
8 for (int i = 1; i <= n; i++) {
9 if (i % 2 == 0) {
10 sum1 += i;
11 } else {
12 sum2 += i;
13 }
14 }
15 cout << sum1 << " " << sum2 <<endl;
16 return 0;
17}二、知识总结
✨ for循环结构
什么是for循环
在上一节课中我们学习了while循环,while循环的初始化、条件判断、变量更新分散在不同的位置。for循环把这三个部分集中写在一行,结构更紧凑,特别适合已知循环次数的场景。
语法格式
for循环语法格式代码示例
for (①定义循环变量; ②循环条件判断; ③更新循环变量) {
④循环操作
}for循环内部代码运行顺序:
- 执行 ①定义循环变量(只执行一次)
- 判断 ②循环条件 是否满足
- 若为真,执行 ④循环操作
- 执行 ③更新循环变量
- 重复第2~4步,直到条件为假
for循环流程图
正在渲染流程图...
注意事项
使用for循环时需要注意以下几点:
- 在for循环内创建的循环变量不可以在循环外使用
- for循环内若只有一行代码,可以不使用大括号(但建议初学者始终加大括号)
综合示例:求1到100的偶数和
循环变量i从2开始,每次递增2,累加到sum中。
正在渲染流程图...
for循环求偶数和代码
int sum = 0;
for (int i = 2; i <= 100; i += 2) {
sum += i;
}
cout << sum << endl;for循环的多种写法
通过修改for循环的三个部分(初始化、条件、更新),可以实现不同的循环方式:
正序循环:循环变量从小到大递增,是最常见的写法。
正序求和:1+2+3+...+100
int sum = 0;
for (int i = 1; i <= 100; ++i) {
sum += i;
}倒序循环:循环变量从大到小递减,适用于需要从后往前遍历的场景。
倒序求和:100+99+98+...+1
int sum = 0;
for (int i = 100; i > 0; --i) {
sum += i;
}步长循环:循环变量每次增加或减少指定的值(步长),适用于需要间隔取值的场景。
奇数求和:1+3+5+...+99(步长为2)
int sum = 0;
for (int i = 1; i <= 100; i += 2) {
sum += i;
}✨ 循环控制语句
break语句:终止循环
break语句用于立即跳出整个循环,执行循环后面的代码。
break示例:找到第一个能被7整除的数
1for (int i = 1; i <= 10; ++i) {
2 if (i % 7 == 0) {
3 cout << i << endl; // 输出 7
4 break; // 找到后立即跳出循环
5 }
6}正在渲染流程图...
continue语句:跳过当前迭代
continue语句用于跳过本次循环剩余的代码,直接进入下一次循环。
continue示例:输出1到10中的奇数
1for (int i = 1; i <= 10; ++i) {
2 if (i % 2 == 0) {
3 continue; // 跳过偶数,不执行下面的输出
4 }
5 cout << i << " "; // 只输出奇数:1 3 5 7 9
6}正在渲染流程图...
✨ 变量的作用域
什么是作用域
作用域是指变量可以被使用的范围。变量只能在它被创建的那个大括号范围内使用,超出范围就无法访问。理解作用域可以帮助我们避免很多常见的编程错误。
局部变量
在一个大括号内创建的变量叫做局部变量,只能在该大括号内使用,出了大括号就无法访问。
局部变量示例
for (int i = 0; i < 5; ++i) {
int x = i * 2; // x 只在循环体内有效
}
// cout << x; // 错误!x 在这里无法使用
// cout << i; // 错误!i 在这里也无法使用若大括号外和大括号内有同名变量,它们是两个独立的变量,互不影响:
同名变量示例
1int a = 10;
2{
3 int a = 20; // 这是一个新的变量,和外面的 a 无关
4 cout << a << endl; // 输出 20
5}
6cout << a << endl; // 输出 10,外部的 a 没有被改变但如果大括号内没有重新定义同名变量,而是直接修改,则会影响外部变量:
修改外部变量示例
int a = 10;
{
a = 20; // 没有 int,不是定义新变量,而是修改外部的 a
}
cout << a << endl; // 输出 20,外部的 a 被改变了全局变量
在main函数外部创建的变量叫做全局变量,可以在该文件的任何地方使用。
全局变量示例
1#include <bits/stdc++.h>
2using namespace std;
3
4int count = 0; // 全局变量,所有函数都可以使用
5
6int main() {
7 count = 10;
8 cout << count << endl; // 输出 10
9 return 0;
10}注意: 一般不建议使用全局变量,因为全局变量可以在任何地方被修改,容易导致代码难以维护和调试。