女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

糖盒里有 3 颗糖,机器人每次取 1 颗,直到盒子空了。它不必先写三次取糖。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 检查剩 3,可以取
  2. 更新剩 2,再检查
  3. 更新剩 1,再检查
  4. 剩 0条件为假,结束

while 在每轮开始前检查条件。循环体通常要改变与条件有关的状态,才能接近结束。

这里的状态是剩余糖数,取一次就少 1。

01什么时候适合 while?

有些任务在开始前并不知道要重复多少次。

例如:只要用户还没有输入 0,就继续读取数字。

int x;
std::cin >> x;

while (x != 0) {
    std::cout << x << '\n';
    std::cin >> x;
}

02while 是怎样工作的?

检查条件true:执行循环体回去再次检查

如果条件一开始就是 false,循环体一次也不会执行。

03while 和 for 有什么不同?

for

常用于计数、遍历等更新规则清晰的循环。

while

常用于“只要某个状态还成立就继续”的循环。

它们都能表达很多相同逻辑,选择哪一个主要看哪种写法更清楚。

04为什么条件一定要发生变化?

int x = 1;

while (x < 10) {
    std::cout << x;
}

这里 x 永远不会改变,所以条件一直是 true,循环不会正常结束。

05输入失败时也要小心

如果循环依赖输入,仅检查数值有时还不够,因为输入本身也可能失败。

int x;

while (std::cin >> x) {
    std::cout << x << '\n';
}

这里利用输入流状态控制循环,当读取失败或到达输入结束时就退出。

06while 能写计数循环吗?

当然可以:

int i = 1;

while (i <= 3) {
    std::cout << i << '\n';
    i++;
}

它和前面的简单 for 循环表达的是相同的重复过程。

你已经知道了什么

  • while 每轮开始前先检查条件。
  • 条件为 true 就继续,false 就结束。
  • 条件一开始为 false 时,循环体可能一次也不执行。
  • while 特别适合循环次数事先不确定的任务。
  • 必须考虑什么变化会让循环最终结束。

下一篇:循环里的变量发生了什么?

轮到你来试一试

取走糖后忘了更新记录里的数量,程序可能怎样?

想好了吗?点开看解释

记录一直显示有糖,条件可能始终成立,形成无限循环。现实动作与程序记录都要对应更新。