让电脑重复做事情——循环结构
一、引言
小故事:
小明要打印100遍“我爱编程”,如果一行一行写:
cout << "我爱编程" << endl;
cout << "我爱编程" << endl;
cout << "我爱编程" << endl;
// ... 要写100行!
问题: 这样写太麻烦了!有没有更好的办法?
答案: 有!我们可以用循环让电脑自动重复做事情!
循环就是让计算机帮我们自动重复执行某些代码!
二、认识循环结构
循环就像生活中的 重复
想象一下:
- 体育老师让你跑5圈操场
- 妈妈说重复10遍:"我要整理好自己的房间"
- 背诵乘法表:1×1=1, 1×2=2, 1×3=3...
循环的三要素:
- 循环起点:从什么时候开始
- 循环条件:到什么情况停止
- 循环体:重复做什么事情
三、for循环 - 计数循环
1. for循环的基本结构
for (起始条件; 循环条件; 更新条件) {
// 重复执行的代码 - 循环体
}
2. 第一个for循环示例
#include <bits/stdc++.h>
using namespace std;
int main() {
// 输出5次"你好,世界!"
for (int i = 1; i <= 5; i++) {
cout << "第" << i << "次:你好,世界!" << endl;
}
return 0;
}
运行结果:
第1次:你好,世界!
第2次:你好,世界!
第3次:你好,世界!
第4次:你好,世界!
第5次:你好,世界!
3. 理解循环变量 i
int i = 1:从1开始计数i <= 5:只要i小于等于5就继续循环i++:每次循环后i增加1
让我们跟踪一下循环过程:
| 循环次数 | i的值 | i < = 5 | 执行情况 |
|---|---|---|---|
| 第1次 | 1 | 真 | 执行 |
| 第2次 | 2 | 真 | 执行 |
| 第3次 | 3 | 真 | 执行 |
| 第4次 | 4 | 真 | 执行 |
| 第5次 | 5 | 真 | 执行 |
| 第6次 | 6 | 假 | 停止 |
4. 更多for循环示例
示例1:输出1-10的数字
#include <bits/stdc++.h>
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
cout << endl;
return 0;
}
示例2:计算1+2+3+...+100
#include <bits/stdc++.h>
using namespace std;
int main() {
int sum = 0; // 用来存储总和
for (int i = 1; i <= 100; i++) {
sum = sum + i; // 把每个数加到sum里
}
cout << "1+2+3+...+100 = " << sum << endl;
return 0;
}
示例3:输出偶数
#include <bits/stdc++.h>
using namespace std;
int main() {
// 输出1-20之间的所有偶数
for (int i = 2; i <= 20; i = i + 2) {
cout << i << " ";
}
cout << endl;
return 0;
}
填空:倒计时火箭
#include <bits/stdc++.h>
using namespace std;
int main() {
// 请补全代码,实现10到1的倒计时
for (int i = __1__; i >= __2__; i--) {
cout << __3__ << endl;
}
cout << "发射!🚀" << endl;
return 0;
}
四、while循环 - 条件循环
1. while循环的基本结构
while (循环条件) {
// 重复执行的代码
}
2. while循环示例
示例1:数数游戏
#include <bits/stdc++.h>
using namespace std;
int main() {
int count = 1;
while (count <= 5) {
cout << "现在数到:" << count << endl;
count++; // count = count + 1
}
cout << "数完了!" << endl;
return 0;
}
示例2:密码验证
#include <bits/stdc++.h>
using namespace std;
int main() {
int password = 123456; // 正确密码
int input;
cout << "请输入密码:";
cin >> input;
while (input != password) {
cout << "密码错误,请重新输入:";
cin >> input;
}
cout << "密码正确,欢迎使用!" << endl;
return 0;
}
五、do-while循环 - 至少执行一次
基本结构:
do {
// 循环体
} while (循环条件);
示例:菜单选择
#include <bits/stdc++.h>
using namespace std;
int main() {
int choice;
do {
cout << "==== 游戏菜单 ====" << endl;
cout << "1. 开始游戏" << endl;
cout << "2. 查看帮助" << endl;
cout << "3. 退出" << endl;
cout << "请选择:";
cin >> choice;
} while (choice != 3); // 只要不是3就继续显示菜单
cout << "谢谢使用!" << endl;
return 0;
}
六、循环控制语句
1. break - 跳出循环
#include <bits/stdc++.h>
using namespace std;
int main() {
// 找第一个能被7整除的数
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
cout << "找到了!" << i << "能被7整除" << endl;
break; // 找到后就跳出循环
}
}
return 0;
}
2. continue - 跳过本次循环
#include <bits/stdc++.h>
using namespace std;
int main() {
// 输出1-10中不是3的倍数的数
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
continue; // 跳过3的倍数
}
cout << i << " ";
}
cout << endl;
return 0;
}
七、趣味编程实践
实践1:打印九九乘法表
#include <bits/stdc++.h>
using namespace std;
int main() {
for (int i = 1; i <= 9; i++) { // 控制行
for (int j = 1; j <= i; j++) { // 控制列
cout << j << "×" << i << "=" << i*j << "\t";
}
cout << endl;
}
return 0;
}
实践2:猜数字游戏
#include <bits/stdc++.h>
using namespace std;
int main() {
srand(time(0)); // 设置随机数种子
int secret = rand() % 100 + 1; // 1-100的随机数
int guess;
int attempts = 0;
cout << "我想了一个1-100之间的数,猜猜是多少?" << endl;
while (true) {
cout << "你的猜测:";
cin >> guess;
attempts++;
if (guess == secret) {
cout << "恭喜!猜对了!用了" << attempts << "次" << endl;
break;
} else if (guess < secret) {
cout << "太小了,再试试!" << endl;
} else {
cout << "太大了,再试试!" << endl;
}
}
return 0;
}
实践3:统计成绩
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
double score, sum = 0;
cout << "要统计几个同学的成绩?";
cin >> n;
for (int i = 1; i <= n; i++) {
cout << "请输入第" << i << "个同学的成绩:";
cin >> score;
sum += score; // sum = sum + score
}
cout << "总分:" << sum << endl;
cout << "平均分:" << sum / n << endl;
return 0;
}
八、常见错误提醒
错误1:死循环
// 错误示例 - 永远停不下来!
while (true) {
cout << "一直在循环..." << endl;
// 缺少改变循环条件的语句
}
// 正确写法
int i = 0;
while (i < 5) {
cout << "循环中..." << endl;
i++; // 一定要有让循环结束的条件
}
错误2:忘记花括号
// 错误 - 只有第一行代码在循环中
for (int i = 0; i < 5; i++)
cout << "第" << i << "次";
cout << "循环结束"; // 这行不在循环内!
// 正确
for (int i = 0; i < 5; i++) {
cout << "第" << i << "次";
cout << "循环结束";
}
错误3:分号位置错误
// 错误 - 循环体是空语句
for (int i = 0; i < 5; i++); {
cout << "hello"; // 这行只执行一次!
}
// 正确
for (int i = 0; i < 5; i++) {
cout << "hello";
}
九、总结与记忆口诀
循环选择指南:
- 知道具体次数 → 用
for循环 - 不知道次数,但知道条件 → 用
while循环 - 至少执行一次 → 用
do-while循环
十、课后练习
挑战练习:
- 找出100以内的所有质数
- 编写程序输出菱形图案
- 模拟ATM机,可以多次存款、取款、查询余额