🔄 C++ while循环 - L10 进阶概念

掌握循环结构,让代码重复执行

📚 什么是while循环?

while循环的作用

while循环让代码在条件为真时重复执行,适合不确定循环次数的场景。

  • ✅ 实现重复执行
  • ✅ 条件为真时继续循环
  • ✅ 适合不确定次数的循环
  • ⚠️ 注意避免死循环

基本语法结构

#include <iostream> using namespace std; int main() { int i = 1; // while循环:当i<=5时重复执行 while (i <= 5) { cout << "第" << i << "次循环" << endl; i++; // 重要:更新循环变量 } cout << "循环结束" << endl; return 0; }
💡 语法要点:
while 后面跟着圆括号和条件
• 条件为真(true)时执行循环体
• 循环体内必须更新循环变量
• 否则会导致死循环!

⚙️ 循环的执行流程

while循环的工作原理

#include <iostream> using namespace std; int main() { int count = 0; cout << "开始循环..." << endl; while (count < 3) { cout << "循环次数:" << count << endl; count++; // 每次循环count加1 } cout << "循环结束,count = " << count << endl; return 0; }
💡 执行步骤:
1. 检查条件(count < 3)
2. 如果为真,执行循环体
3. 执行count++
4. 回到步骤1重新检查条件
5. 如果为假,跳出循环
🎮 互动实验:循环模拟器

设置循环次数,观察while循环的执行过程

输入循环次数后点击"模拟执行"...

🛠️ 常见应用场景

累加求和

#include <iostream> using namespace std; int main() { int n, sum = 0, i = 1; cout << "请输入n:"; cin >> n; // 计算1+2+3+...+n while (i <= n) { sum += i; // sum = sum + i i++; } cout << "1到" << n << "的和为:" << sum << endl; return 0; }

用户输入验证

#include <iostream> using namespace std; int main() { int score; cout << "请输入成绩(0-100):"; cin >> score; // 如果输入无效,持续要求重新输入 while (score < 0 || score > 100) { cout << "输入无效!请重新输入:"; cin >> score; } cout << "有效成绩:" << score << endl; return 0; }
💡 应用技巧:
• 用于数据验证,确保输入合法
• 用于重试机制,直到成功为止
• 用于游戏循环,直到游戏结束
• 用于文件读取,直到文件末尾
🎯 累加计算器

输入数字n,计算1到n的累加和

输入数字后点击"计算"...

🚀 避免死循环

死循环示例与解决

#include <iostream> using namespace std; int main() { // ❌ 错误示例:忘记更新循环变量 // int i = 1; // while (i <= 5) { // cout << i << endl; // // 忘记写 i++,导致死循环! // } // ✅ 正确示例:记得更新循环变量 int i = 1; while (i <= 5) { cout << i << endl; i++; // 重要:更新循环变量 } // ✅ 另一种写法:在循环体内更新 int j = 10; while (j > 0) { cout << j << " "; j--; // 递减 } cout << endl; return 0; }
⚠️ 死循环的原因:
• 忘记更新循环变量
• 更新方向错误(应该递增却递减)
• 条件永远为真(如 while(true))
• 浮点数精度问题导致条件不满足

✅ 预防措施:
• 确保循环变量会改变
• 检查更新方向是否正确
• 设置最大循环次数作为保护

break和continue在while中

#include <iostream> using namespace std; int main() { int i = 0; cout << "使用break提前退出:" << endl; while (i < 10) { i++; if (i == 5) { break; // 当i=5时跳出循环 } cout << i << " "; } cout << endl; i = 0; cout << "\n使用continue跳过本次:" << endl; while (i < 10) { i++; if (i % 2 == 0) { continue; // 跳过偶数 } cout << i << " "; } cout << endl; return 0; }

📝 实战练习

📝 小练习:循环理解

以下代码的输出是什么?

#include <iostream> using namespace std; int main() { int i = 1; while (i <= 3) { cout << i << " "; i += 2; } return 0; }
选择答案查看解析...
💻 编程挑战

题目:使用while循环计算n的阶乘(n! = 1×2×3×...×n)。

输入数字后点击"生成代码"...