for循环
中等7for循环:让电脑乖乖重复工作的计数器
你有没有遇到过这种情况?老师让你抄写10遍“我要考满分”,你才抄了两遍就手酸。如果让电脑来做,你只需要告诉它“重复10次”,它就会不厌其烦地执行。在C++里,for循环就是这个帮你重复做事的“机器人助手”。它的特别之处在于:自带一个“计数器”,从开始数到结束,每数一次就做一件事,数完就自动停下。
1. for循环的“三件套”
先看它的固定格式:
for (初始化计数器; 判断条件; 更新计数器) {
// 每次要重复做的事情
}
这三部分就像你设置闹钟的三个步骤:
- 初始化计数器:比如“从第1天开始记”。通常定义一个变量并赋初值。
- 判断条件:比如“如果还没到第11天,就继续”。条件为真时,循环继续;假时结束。
- 更新计数器:每次做完事情后,让计数器增加(或减少),比如“天数加1”。
- 大括号里:就是你要电脑重复做的事,比如“写一遍‘我要考满分’”。
一个生活中的例子:
妈妈让你每天吃1颗维生素,连续吃7天。用for循环描述就是:
for (int day = 1; day <= 7; day = day + 1) { // 从第1天到第7天
吃一颗维生素; // 这是循环体
}
2. 一步步看它如何工作:从1数到10
还记得原文的例子吗?输出1到10。我们放大来看每一步:
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 10; i = i + 1) { // i从1开始,不超过10,每次加1
cout << i << endl; // 输出当前的i
}
return 0;
}
执行过程就像排队报数:
- 先叫到第1号(初始化
i=1)。 - 检查1号是否≤10号(条件
i<=10),是,让他喊“1”。 - 喊完,1号往前走一步变成2号(更新
i=i+1)。 - 再检查2号是否≤10,是,喊“2”……
- 直到10号喊完,变成11号,检查11≤10?不成立,结束。
运行结果:
1
2
3
4
5
6
7
8
9
10
3. 更多生活中的例子,帮你彻底搞懂
例1:抄写20遍“我要认真听课”
#include <iostream>
using namespace std;
int main() {
for (int count = 1; count <= 20; count = count + 1) { // 从1到20
cout << "我要认真听课" << endl;
}
return 0;
}
屏幕会打印20行“我要认真听课”。这里 count 只是用来计数的,循环体里可以不使用它。
例2:计算妈妈一周给你的零花钱总和
假设妈妈每天给你5元零花钱,连续7天,一共多少钱?
#include <iostream>
using namespace std;
int main() {
int total = 0; // 总钱数,初始0元
for (int day = 1; day <= 7; day = day + 1) { // 从第1天到第7天
total = total + 5; // 每天加5元
}
cout << "一周零花钱总共:" << total << "元" << endl;
return 0;
}
运行结果:
一周零花钱总共:35元
思考:如果把条件改成 day < 7,结果是多少?(提示:只会加6次,得到30元。)这里 <= 和 < 的差别很重要。
4. 新手最容易掉进去的坑
坑1:忘记更新计数器 → 死循环
for (int i = 1; i <= 10; ) { // 忘记写 i = i + 1
cout << i << endl;
}
i 永远是1,条件永远成立,电脑会疯狂输出“1”,停不下来!如果你运行了这种程序,可以按 Ctrl+C 强制终止,但最好一开始就写对。
坑2:分号位置写错
for 循环的括号里用的是分号隔开三部分,不是逗号。很多人写成:
for (int i = 1, i <= 10, i = i + 1) // 错误!应该用分号
这样编译器会报错。正确写法是:
for (int i = 1; i <= 10; i = i + 1)
坑3:循环变量作用域搞错
如果在 for 循环里定义变量 i,循环结束后 i 就不存在了。比如:
for (int i = 1; i <= 5; i = i + 1) {
// 这里能用 i
}
cout << i; // 错误!i 已经“消失”了
如果想在循环外使用 i,需要在外面定义:
int i; // 在主函数里定义
for (i = 1; i <= 5; i = i + 1) {
// ...
}
cout << i; // 可以,此时 i 为6(因为最后更新到了6,条件不成立退出)
坑4:边界条件判断错
例如想输出1到10,写成 i < 10 只会输出19;写成 10。想清楚“包含不包含终点”很重要。i <= 10 才是1
5. 完整示例:帮小明算考试总分
小明考了5门课,成绩分别是85, 92, 78, 90, 88。用for循环计算总分和平均分。
#include <iostream>
using namespace std;
int main() {
int score[5] = {85, 92, 78, 90, 88}; // 5门课的成绩
int sum = 0; // 总分,初始0
for (int index = 0; index < 5; index = index + 1) { // 索引从0到4
sum = sum + score[index]; // 累加每门成绩
}
double average = sum / 5.0; // 平均分,注意用5.0得到小数
cout << "总分:" << sum << "分" << endl;
cout << "平均分:" << average << "分" << endl;
return 0;
}
运行结果:
总分:433分
平均分:86.6分
这里我们用了数组 score 来存放成绩,index 从0开始(因为数组下标从0开始)。注意条件 index < 5,不是 <=,否则会访问到越界的下标5(数组只有0~4)。
6. 学完for循环,下一步学什么?
for循环是编程中最常用的重复结构,但还有两种也能实现循环:
- while循环:适合“不知道要重复多少次,但知道什么条件满足时继续”。
- do-while循环:至少执行一次再判断条件。
另外,循环嵌套(循环里面套循环)可以做出九九乘法表、画三角形等有趣图案。比如用两个for循环嵌套打印一个矩形:
for (int row = 1; row <= 5; row = row + 1) { // 外层控制行
for (int col = 1; col <= 3; col = col + 1) { // 内层控制列
cout << "* ";
}
cout << endl; // 每一行结束后换行
}
掌握好for循环,就等于学会了让电脑“自动化”的钥匙。下次再遇到重复任务时,记得用for循环给它派活吧!
例题精讲
以下关于C++中for循环的语法格式,正确的是哪个?
在for循环中,初始化表达式(如int i=0)只在循环开始时执行一次,后续迭代不再执行。
以下代码使用for循环计算1到100的累加和,请补全空缺部分。
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i <= 100; ___) {
sum += i;
}
cout << sum << endl;
return 0;
}执行以下for循环后,输出结果是什么? int s = 0; for (int i = 1; i <= 5; i++) { s += i; } cout << s;
以下代码使用for循环输出数组a中的所有元素,请补全空缺。
#include <iostream>
using namespace std;
int main() {
int a[] = {2, 4, 6, 8, 10};
int n = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < n; ___) {
cout << a[i] << " ";
}
return 0;
}