CC++ & Algorithm

C++ while 循环基础

简单33
语言版本:C++Python
概述:通过“只要条件成立就一直做”的比喻,学习while循环如何反复执行代码。

C++ 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循环的执行过程可以想象成“先检查、再行动”:

  1. 程序走到while语句时,先看括号里的条件。
  2. 如果条件为(比如 i <= 5 成立),就执行花括号里的所有语句。
  3. 执行完一遍后,立刻回到第1步,再次检查条件。
  4. 如果条件变成(比如 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

新手容易犯的错误

  1. 忘记更新变量:最常见的错误!如果循环体内没有改变条件中涉及的变量,条件永远为真,程序会无限循环,甚至导致电脑卡死。
    // 错误示范:忘记 i++,导致无限循环
    int i = 1;
    while (i <= 5) {
        cout << i << " ";
        // 缺少 i = i + 1;
    }
    
  2. 条件写反:比如把 <= 写成 >=,导致循环一次都不会执行,或者无限循环。
  3. 初始化位置不对:计数器必须在while之前初始化,如果在循环内部初始化,每次循环都会重置,也会无限循环。
  4. 分号放错位置:如果在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 循环,你可以写出更多像猜数字、累加计算、等待输入直到正确等有趣又实用的程序。快去试试吧!

例题精讲

1单选题

以下哪个选项是正确的C++ while循环语法?

Awhile (条件) { 语句; }
Bwhile (条件) { 语句; };
Cwhile (条件) 语句;
Dwhile 条件 { 语句; }
2单选题

执行以下代码后,循环体执行的次数是? int i = 0; while (i < 5) { i++; }

A4次
B5次
C6次
D0次
3判断题

在C++中,while循环的条件表达式如果为0,则循环体一次也不会执行。

4填空题
以下代码使用while循环输出1到5的整数,请补全条件。
#include <iostream>
using namespace std;
int main() {
    int i = 1;
    while (___) {
        cout << i << " ";
        i++;
    }
    return 0;
}
5填空题
以下代码使用while循环计算1到100的和,请补全循环体内的更新语句。
#include <iostream>
using namespace std;
int main() {
    int sum = 0, i = 1;
    while (i <= 100) {
        sum += i;
        ___;
    }
    cout << sum;
    return 0;
}