C++ while 循环基础
简单33C++ while 循环:只要条件成立就一直做
小朋友们,你们有没有玩过“石头剪刀布”?只要还没分出胜负,就继续玩。在C++里,while循环就像这个游戏规则:只要条件为真,就一直重复做某件事。和for循环不同的是,while循环没有自动的“计数器”,它只有一个“条件”,条件满足就一直循环。
比如你想让电脑一直说“你好”,直到你喊停(其实可以改成一个固定次数)。我们用while循环写一个数到5的例子,看看它和for循环的区别。
while 循环的写法
while循环的写法是:
while (条件) {
要重复做的事情;
}
条件是一个真或假的判断,比如 i <= 5。只要条件为真,就执行花括号里的代码;执行完再回来检查条件,如果还为真就继续,如果为假就退出。
用 while 循环从1数到5
下面是一个用while循环从1数到5的程序:
#include <iostream>
using namespace std;
int main() {
int i = 1; // 初始化计数器,从1开始
while (i <= 5) { // 条件:i <= 5 吗?只要成立就继续
cout << i << " "; // 输出当前数字
i = i + 1; // 计数器加1,非常重要!
}
return 0;
}
运行结果也是:1 2 3 4 5
你看,while循环里需要自己手动改变变量的值(比如 i = i + 1),否则条件永远为真就会陷入无限循环,电脑就会不停地输出,停不下来。就像玩游戏一直不结束一样。
while 循环的执行流程
while循环的执行过程可以想象成“先检查、再行动”:
- 程序走到while语句时,先看括号里的条件。
- 如果条件为真(比如
i <= 5成立),就执行花括号里的所有语句。 - 执行完一遍后,立刻回到第1步,再次检查条件。
- 如果条件变成假(比如
i已经变成6,6 <= 5不成立),就跳过花括号,继续执行后面的代码。
举个例子:你每天写作业前先问妈妈“我可以看电视吗?”如果妈妈说可以(条件为真),你就看一会儿电视,然后回来再问一遍;如果妈妈说不行(条件为假),你就直接去写作业,一次也不看。这正是 while 循环的“先判断后执行”。
什么时候用 while 循环最合适?
while循环特别适合“不知道要循环多少次”的情况。比如:
- 你问用户一个数,然后一直把数加1,直到超过100。因为用户输入的值不确定,用while就很好。
- 猜数字游戏:让玩家一直猜,直到猜对为止。猜对的次数不确定。
- 排队买冰淇淋:只要前面还有人就继续等,直到轮到你。
下面是一个猜数字的简单例子(电脑心里想好一个1~10的数字,你输入猜测):
#include <iostream>
using namespace std;
int main() {
int secret = 7; // 秘密数字
int guess; // 用户猜的数字
cout << "猜一个1~10之间的数字:";
cin >> guess; // 输入第一次猜测
while (guess != secret) { // 只要没猜中,就继续猜
cout << "猜错了,再猜一次:";
cin >> guess; // 重新输入
}
cout << "恭喜你猜对了!答案是" << secret << endl;
return 0;
}
这个程序一开始只问一次,但while循环会一直重复问,直到用户输入的数字等于7。如果不确定要问多少次,while循环就是最好的选择。
和 for 循环的区别
for循环自带“计数器”,通常用于知道确切循环次数的情况。比如要数5个数,可以用for循环写:
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
而while循环需要自己手动写 i = i + 1; 来更新变量。如果你忘了写这一句,程序就会陷入无限循环,永远停不下来。
什么时候用for,什么时候用while?简单记:知道次数用for,不知道次数用while。
新手容易犯的错误
- 忘记更新变量:最常见的错误!如果循环体内没有改变条件中涉及的变量,条件永远为真,程序会无限循环,甚至导致电脑卡死。
// 错误示范:忘记 i++,导致无限循环 int i = 1; while (i <= 5) { cout << i << " "; // 缺少 i = i + 1; } - 条件写反:比如把
<=写成>=,导致循环一次都不会执行,或者无限循环。 - 初始化位置不对:计数器必须在while之前初始化,如果在循环内部初始化,每次循环都会重置,也会无限循环。
- 分号放错位置:如果在while条件后面加了一个分号
while(条件);,这表示循环体是空语句(什么都不做),然后程序一直卡在条件判断上。例如:int i = 1; while (i <= 5); // 注意这里多了分号,循环体为空,无限循环 { cout << i << " "; i++; }
一个完整可运行的例子:计算1到100的总和
生活中计算总成绩、攒零花钱、统计步数都会用到累加。用while循环可以轻松实现:
#include <iostream>
using namespace std;
int main() {
int sum = 0; // 总和,初始为0
int num = 1; // 从1开始累加
while (num <= 100) { // 只要 num 不超过100
sum = sum + num; // 把当前的 num 加到 sum 里
num = num + 1; // 让 num 增加1
}
cout << "1加到100的和是:" << sum << endl;
return 0;
}
运行结果:1加到100的和是:5050
如果你改成 while (num <= 1000),就会算出1到1000的和,非常方便。
倒计时练习
尝试写一个倒计时程序吧:初始化 int i = 10;,条件 i >= 1;,循环体里输出 i 然后 i = i - 1(或者 i--)。运行后应该输出 10 9 8 7 6 5 4 3 2 1。
相关知识和下一步
- 如果你想要“先做一次,再判断条件”,可以学习 do-while 循环。
- 如果需要在循环中途提前结束,可以学习 break 语句。
- 如果需要在本次循环中跳过剩下的代码,直接进入下次循环,可以学习 continue 语句。
- 对于已经知道循环次数的情况,可以回顾 for 循环。
通过掌握 while 循环,你可以写出更多像猜数字、累加计算、等待输入直到正确等有趣又实用的程序。快去试试吧!
例题精讲
以下哪个选项是正确的C++ while循环语法?
执行以下代码后,循环体执行的次数是? int i = 0; while (i < 5) { i++; }
在C++中,while循环的条件表达式如果为0,则循环体一次也不会执行。
以下代码使用while循环输出1到5的整数,请补全条件。
#include <iostream>
using namespace std;
int main() {
int i = 1;
while (___) {
cout << i << " ";
i++;
}
return 0;
}以下代码使用while循环计算1到100的和,请补全循环体内的更新语句。
#include <iostream>
using namespace std;
int main() {
int sum = 0, i = 1;
while (i <= 100) {
sum += i;
___;
}
cout << sum;
return 0;
}