while循环
困难6while循环:让计算机重复做一件事
就像反复做同一件事直到条件改变,while循环让计算机重复执行代码直到条件不再成立。在生活里,我们经常需要重复动作:比如每天刷牙、每周上同一门课,或者在游戏里不断按空格键跳跃。C++ 中的 while 循环就是帮我们做这种重复工作的工具。
生活中的比喻
想象你在玩一个闯关游戏:每次赢了一局,就能再玩一局,一直玩到输掉为止。这里的规则是“只要赢,就继续玩”。在C++中,while循环就像这个规则:
while (条件) { 要重复做的事情 }
只要条件成立(为真),花括号里的代码就会一遍又一遍地执行;一旦条件不再成立(为假),循环就会停止,程序继续往下走。
再举个例子:你妈妈让你“如果有零花钱,就买一瓶牛奶”。这里的条件是“有零花钱”,重复做的事情是“买牛奶”。如果零花钱花光了,条件不成立,就不买了。循环也是一样。
while 循环的完整写法
while (条件表达式) {
// 循环体:要重复执行的代码
}
重要特点:先判断条件,再决定是否执行循环体。如果一开始条件就不成立,循环体一次都不执行。
一个完整的例子
下面的程序用 while 循环输出 1 到 5 这几个数字:
#include <iostream>
using namespace std;
int main() {
int i = 1; // 从1开始
while (i <= 5) { // 只要i小于等于5,就继续循环
cout << i << " "; // 输出当前的i
i++; // 把i增加1(i = i + 1的简写)
}
cout << endl; // 换行
return 0;
}
运行结果:1 2 3 4 5
循环是怎么工作的?
- 程序先检查
i <= 5是否成立。此时i等于 1,成立,进入循环。 - 输出 1,然后
i变成 2。 - 再次检查条件:2 <= 5,成立,继续输出 2……
- 直到
i变成 6 时,6 <= 5不成立,循环结束。
你可以把循环想象成“重复检查 → 做事 → 再检查”的流程,就像玩游戏时每赢一局就先看看能不能继续玩。
更多实际应用
1. 计算 1 到 100 的总和
#include <iostream>
using namespace std;
int main() {
int sum = 0; // 总和,初始为0
int i = 1; // 从1开始
while (i <= 100) { // 加到100为止
sum = sum + i; // 把当前的i累加到sum里
i++; // 准备加下一个数
}
cout << "1到100的和是:" << sum << endl;
return 0;
}
运行结果:1到100的和是:5050
生活例子:你每天存 1 块钱到存钱罐,第一天存 1 块,第二天再存 2 块……连存 100 天,总共存了 5050 元。
2. 输入密码直到正确
#include <iostream>
using namespace std;
int main() {
int password = 123456; // 正确密码
int input; // 用户输入
cout << "请输入密码:";
cin >> input; // 第一次输入
while (input != password) { // 只要输入不对就重复
cout << "密码错误,请重新输入:";
cin >> input; // 再次输入
}
cout << "登录成功!" << endl;
return 0;
}
这里 while 循环让用户不断尝试,直到输入正确为止。注意,第一次输入在循环外面,这是因为我们至少需要一次输入来判断是否进入循环。
3. 累加用户输入的数字直到输入0
#include <iostream>
using namespace std;
int main() {
int num; // 每次输入的数字
int total = 0; // 总和
cout << "请输入数字(输入0结束):";
cin >> num;
while (num != 0) { // 只要不是0,就继续累加
total = total + num;
cout << "请输入下一个数字(输入0结束):";
cin >> num; // 再次输入,更新条件
}
cout << "所有数字的总和是:" << total << endl;
return 0;
}
小心无限循环
如果忘记写改变条件的语句(比如 i++),或者条件永远为真(比如写成 while (1) 且没有 break 语句),程序就会一直运行下去,永不停止。这就像没完没了地玩游戏,电脑会卡住甚至死机。
常见错误示例:
int i = 1;
while (i <= 5) {
cout << i << " ";
// 忘记写 i++,导致 i 永远等于1,条件永远成立
}
这段程序会不停地输出 1 1 1 1 1...,直到你强制关闭程序。
解决:确保循环体内有改变条件的语句。如果必须使用无限循环,请使用 break 语句跳出。
新手容易犯的其他错误
-
在 while 后面的括号后加了分号
while (i <= 5); // 这里的分号表示循环体为空,后面{}不属于循环 { cout << i; i++; }这样会导致只有空循环在无限执行(因为
i不会变化),而花括号里的代码只执行一次。记住:不要在while (条件)后直接加分号,除非你故意写空循环。 -
条件写成赋值符号
=而不是比较符号==while (i = 5) // 错误:将5赋值给i,表达式的结果是5(非零,永远为真)这样会变成无限循环。应该用
i == 5。 -
忘记初始化循环变量
int i; // 未赋值,i 的值不确定 while (i <= 5) { // 危险!i可能是随机大数,循环可能根本不会执行或执行多次 ... }
while 循环的另一种形式:do-while
C++ 还有一种 do-while 循环,它先执行一次循环体,再判断条件,所以至少会执行一次。适合“至少要做一次”的场景,比如上面猜密码的例子也可以用 do-while 简化:
int password = 123456;
int input;
do {
cout << "请输入密码:";
cin >> input;
} while (input != password);
这样就不用在外边先写一次输入了。区别在于:while 先判断后执行,do-while 先执行后判断。
总结
while 循环非常适合做“条件重复”的工作。记住三步:初始化变量、设定条件、在循环里改变变量,这样就能安全地控制循环次数。如果想至少执行一次,可以考虑 do-while。
相关知识点指引
- for 循环:另一种常用循环,适合已知次数的重复。
- break 和 continue:在循环中提前跳出或跳过本次循环。
- 嵌套循环:一个循环里面再放一个循环,比如打印九九乘法表。
例题精讲
执行以下代码后,变量 i 的值是多少? int i = 0; while (i < 5) { i++; }
在C++中,while循环的循环体有可能一次都不执行。
以下代码使用while循环计算1到100的和,请填空。
int sum = 0;
int i = 1;
while (___) {
sum += i;
___;
}关于while循环和do-while循环,下列描述正确的是?
以下程序反复读入整数,直到输入0为止,并统计输入的非零整数个数。请填空。
int x, cnt = 0;
cin >> x;
while (___) {
cnt++;
___;
}