ZetCode

C++ while

最后修改于 2023 年 1 月 9 日

C++ while 教程展示了如何使用 while 语句在 C++ 中创建循环。

while 语句

while 语句用于创建 while 循环。while 循环是一种控制流语句,它根据给定的布尔条件重复执行代码。

这是 while 循环的一般形式

while (expression) {

    statement(s);
}

while 关键字执行大括号括起来的块内的语句。只要表达式的计算结果为 true,就会执行这些语句。

C++ while 示例

以下示例使用 while 语句来计算总和。

simple.cpp
#include <iostream>

int main() {

    int i = 0;
    int sum = 0;

    while (i <= 10) {

        sum += i;
        i++;
    }

    std::cout << sum << std::endl;

    return 0;
}

我们计算 1..10 的数字的总和。

while 循环有三个部分:初始化、测试和更新。每次执行语句称为一个周期。

int i = 0;

我们初始化 i 变量。它用作计数器。

while (i <= 10) {
   ...
}

while 关键字后面的括号中的表达式是第二阶段:测试。只要表达式的计算结果为 false,就会执行主体中的语句。

i++;

这是 while 循环的最后第三个阶段:更新。我们递增计数器。请注意,不正确处理 while 循环可能导致无限循环。

$ ./simple 
55

C++ while - 计算阶乘

正整数 n 的阶乘,表示为 n!,是所有小于或等于 n 的正整数的乘积。

n! = n * (n-1) * (n-2) * ... * 1

这是计算阶乘的公式。

factorial.c
#include <iostream>

int main() {

    int i = 10;
    int factorial = 1;

    while (i > 1) {

        factorial *= i;
        i--;
    }

    std::cout << factorial << std::endl;

    return 0;
}

在此示例中,我们使用 while 循环计算 10! 阶乘。

$ ./factorial 
3628800

C++ while - 无限循环

while (1) 创建一个无限循环。为了终止循环,我们使用 break 语句。

random.cpp
#include <random>
#include <iostream>

using u32    = uint_least32_t;
using engine = std::mt19937;

int main() {

    std::random_device os_seed;
    const u32 seed = os_seed();

    engine generator(seed);
    std::uniform_int_distribution<u32> distribute(1, 30);

    while (1) {

        int r = distribute(generator);

        std::cout << r << " ";

        if (r == 22) {

            break;
        }
    }

    std::cout << std::endl;

    return 0;
}

该示例计算 0..29 之间的随机值。如果它等于 22,则使用 break 语句结束循环。

$ ./random 
25 28 9 9 18 6 20 2 5 15 7 11 22

C++ while - 遍历数组

while 语句可用于遍历数组。

loop_array.cpp
#include <iostream>

int main() {

    int vals[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int i, sum = 0;
    size_t len = sizeof vals / sizeof vals[0];

    while (i <= len) {

        sum += vals[i];
        i++;
    }

    std::cout << "The sum is: " << sum << std::endl;

    return 0;
}

在此示例中,我们有一个整数数组。我们使用 while 语句遍历数组并计算值的总和。

$ ./loop_array 
The sum is: 55

C++ do while 示例

do while 语句是 while 语句的一种特殊形式,其中块在条件之前执行。因此,块至少执行一次。

do_while.cpp
#include <iostream>

int main() {

    int val, sum = 0;

    do {

        std::cout << "Enter a number: ";
        std::cin >> val;
        sum += val;

    } while(val != 0);

    std::cout << "The sum is: " << sum << std::endl;

    return 0;
}

该示例要求用户重复输入一个数字。它计算所有这些值的总和。当用户输入零时,循环终止。

$ ./do_while 
Enter a number: 3
Enter a number: 2
Enter a number: 1
Enter a number: 0
The sum is: 6

本教程专门介绍 C++ 中的 while 语句。