2.2 C++之循环结构
学习目标:
- 理解循环的意义(避免重复写代码)。
- 掌握
for
、while
、do-while
循环的用法。 - 能编写简单循环程序(如累加、猜数字、输出图形等)。
1 循环的基本概念
什么是循环?
- 比喻:
- 循环就像“重复做家务”——擦桌子5次、跳绳100下。
- 程序中的循环:让计算机自动重复执行某段代码。
循环的三大要素:
- 初始化:设定循环的起点(例如
int i = 1
)。 - 循环条件:决定是否继续执行(例如
i <= 10
)。 - 更新操作:改变循环变量的值(例如
i++
)。
2 for 循环
基本语法
for (初始化; 循环条件; 更新操作) {// 重复执行的代码
}
示例1:输出1到10的数字
for (int i = 1; i <= 10; i++) {cout << i << " ";
}
运行结果:
1 2 3 4 5 6 7 8 9 10
示例2:计算1到100的累加和
int sum = 0;
for (int i = 1; i <= 100; i++) {sum += i; // 等价于 sum = sum + i
}
cout << "1到100的和是:" << sum;
运行结果:
5050
嵌套循环:输出乘法表
for (int i = 1; i <= 9; i++) { // 外层循环控制行for (int j = 1; j <= i; j++) { // 内层循环控制列cout << j << "x" << i << "=" << i*j << "\t";}cout << endl; // 换行
}
运行结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
...(省略后续行)
3 while 循环
基本语法
初始化;
while (循环条件) {// 重复执行的代码更新操作;
}
示例1:猜数字游戏
srand(time(0));
int num = rand() % 100 + 1; // 生成1-100的随机数
int guess, count = 0;while (true) { // 无限循环,直到猜对cout << "请输入你猜的数字:";cin >> guess;count++;if (guess > num) {cout << "太大了!" << endl;} else if (guess < num) {cout << "太小了!" << endl;} else {cout << "恭喜!你用了" << count << "次猜对了!";break; // 跳出循环}
}
示例2:计算水仙花数
int n = 100;
while (n <= 999) { // 遍历所有三位数int a = n / 100; // 百位int b = (n / 10) % 10; // 十位int c = n % 10; // 个位if (a*a*a + b*b*b + c*c*c == n) {cout << n << " ";}n++;
}
运行结果:
153 370 371 407
4 do-while 循环
基本语法
初始化;
do {// 重复执行的代码更新操作;
} while (循环条件);
特点:
- 至少执行一次循环体(先执行,再判断条件)。
示例:输入密码验证
string password = "123456";
string input;
do {cout << "请输入密码:";cin >> input;
} while (input != password); // 密码错误时重复输入cout << "密码正确!欢迎登录!";
5 break 和 continue
作用:
- break:立即跳出当前循环。
- continue:跳过本次循环剩余代码,进入下一次循环。
示例:找质数(优化版)
for (int i = 2; i <= 100; i++) {bool isPrime = true;for (int j = 2; j <= i/2; j++) { // 优化:只需检查到i/2if (i % j == 0) {isPrime = false;break; // 发现因子后立即跳出内层循环}}if (isPrime) cout << i << " ";
}
6 常见错误 & 调试技巧
易错点:
- 无限循环:忘记更新循环变量。
int i = 1;
while (i <= 10) { // 缺少i++,导致无限循环cout << i << " ";
}
- 循环条件错误:
for (int i=0; i<5; i--); // i--会让i越来越小,永远小于5
- **混淆
break
和 **continue
:
for (int i=1; i<=10; i++) {if (i == 5) continue; // 跳过i=5的循环cout << i << " ";
}
调试技巧:
- 在循环内打印变量值:
cout << "i=" << i << endl;
- 使用调试工具逐步执行(如Visual Studio的逐行调试)。
7 练习与挑战
基础练习
- 用
for
循环输出所有 偶数(1-100)。 - 用
while
循环计算 10的阶乘(10! = 10×9×8×…×1)。
进阶挑战
- “数字炸弹”游戏:计算机随机生成一个1-100的数,玩家每次猜测后,程序缩小范围提示(例如:答案是50,玩家猜30,提示“30-100”)。
- “星号金字塔”:用嵌套循环输出如下图形:
* *** *****
*******
总结
知识点 | 关键内容 |
---|---|
for 循环 | 适合已知次数的循环(如遍历数组、固定次数操作)。 |
while 循环 | 适合未知次数但需先判断条件的循环(如游戏循环)。 |
do-while | 至少执行一次循环体(如密码验证)。 |
break/continue | 控制循环流程,避免冗余计算。 |
下一部分:数组与字符串 —— 用“盒子”存储多个数据!
通过 生活化比喻 和 游戏化案例,少儿可以轻松理解循环的抽象概念。是否需要添加更多互动练习或调整难度?