循环结构-while语句

一、while 语句的概念

在 C++ 中有三种循环控制语句,while 语句是其中最基础的一种。它用于在给定条件为 true 时,重复执行一段代码。

二、while 语句的语法形式

while (表达式)
    语句Code language: JavaScript (javascript)

其中”语句”可以是单条语句,也可以是用大括号 {} 括起来的复合语句(循环体)。

三、执行顺序

  1. 首先判断表达式(循环控制条件)的值。
  2. 若表达式的值为 true(非 0),则执行循环体中的语句。
  3. 循环体执行完毕后,程序流程回到第 1 步,再次判断表达式的值。
  4. 若表达式的值为 false(0),则跳过循环体,执行 while 语句之后的下一条语句。

四、注意事项

  • 一般来说,在循环体中应该包含能够改变循环条件表达式值的语句。否则,如果条件始终为 true,就会形成无限循环(死循环)。
  • while 循环是先判断条件再执行循环体。如果第一次判断时条件就为 false,循环体一次也不会执行。
  • 循环体如果包含多条语句,必须用大括号 {} 括起来形成复合语句,否则只有第一条语句属于循环体。

五、代码示例

以下代码演示了 while 语句的实际应用:

#include <iostream>
using namespace std;

int main()
{
    // 示例1:求自然数 1~10 之和
    int total = 0;
    int num = 1;
    while (num <= 10)
    {
        total += num;
        num++;       // 改变循环条件,避免死循环
    }
    cout << "1+2+...+10 = " << total << endl;   // 输出 55

    // 示例2:求 1~100 的累加和
    int sum = 0;
    int i = 1;
    while (i <= 100)
    {
        sum += i;
        i++;
    }
    cout << "1+2+...+100 = " << sum << endl;   // 输出 5050

    // 示例3:输入一批正整数,统计个数,输入 0 结束
    int count = 0;
    int value;
    cout << "Enter positive integers (0 to stop): ";
    cin >> value;
    while (value != 0)
    {
        count++;
        cin >> value;
    }
    cout << "Total numbers entered: " << count << endl;

    // 示例4:计算 n 的阶乘
    int n = 5;
    int factorial = 1;
    int j = 1;
    while (j <= n)
    {
        factorial *= j;
        j++;
    }
    cout << n << "! = " << factorial << endl;   // 输出 120

    // 示例5:循环体只有一条语句(省略大括号)
    int k = 3;
    while (k > 0)
        cout << "k = " << k-- << endl;   // 只有这一条语句属于循环体

    // 示例6:条件一开始就不满足,循环体一次也不执行
    int m = 10;
    while (m < 5)
    {
        cout << "This will not print" << endl;
        m++;
    }

    return 0;
}Code language: PHP (php)

六、常见错误

1. 忘记更新循环条件导致死循环
int num = 1;
while (num <= 10)
{
    total += num;
    // 忘记写 num++,num 始终为 1,条件始终为 true,形成死循环
}Code language: JavaScript (javascript)
2. 误加分号导致循环体为空
int num = 1;
while (num <= 10);    // 分号使循环体变成空语句
{
    total += num;
    num++;
}
// 上述大括号中的代码只执行一次,不是循环Code language: JavaScript (javascript)
3. 循环体缺少大括号导致逻辑错误
int num = 1;
while (num <= 5)
    cout << num << endl;
    num++;    // 这条语句不在循环体内,num 始终为 1,死循环Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注