C++ while 和 do...while 循环

在本文中,我们讨论了 C++ 中的 whiledo...while 循环。

在编程中,循环用于在满足指定的条件下重复的执行一段代码。

例如,假设我们要显示一条消息 100 次。然后我们可以使用循环而不是编写 100 次打印语句。

C++ 中有 3 种类型的循环。

  • for 循环
  • while 循环
  • do...while 循环

在前面,我们介绍过 for 循环。在本文中,我们要讨论的是 whiledo...while 循环。

C++ while 循环

while 循环的语法是:

while (condition) {
    // body of the loop
}

说明:

  • conditionwhile 循环计算条件表达式。
  • 如果 condition 计算结果为 true ,则执行 while 循环内的代码。
  • 然后继续计算 condition 条件表达式。
  • 这个过程一直持续到条件表达式的计算结果为 false
  • condition 计算为 false 时,循环终止。

while 循环流程图

下图展示了 while 循环的处理流程:

C++ while 循环流程图
C++ while 循环流程图

示例 1:显示从 1 到 5 的数字

#include <iostream>

using namespace std;

int main() {
    int i = 1;

    // while loop from 1 to 5
    while (i <= 5) {
        cout << i << " ";
        ++i;
    }

    return 0;
}

输出

1 2 3 4 5

下表展示了是这个程序的工作逻辑:

迭代次数 变量 i i <= 5 操作
第 1 次 i = 1 true 打印 1i 增加到 2 .
第 2 次 i = 2 true 打印 2i 增加到 3 .
第 3 次 i = 3 true 打印 3i 增加到 4 .
第 4 次 i = 4 true 打印 4i 增加到 5 .
第 5 次 i = 5 true 打印 5i 增加到 6 .
第 6 次 i = 6 false 循环终止

示例 2:仅正数之和

#include <iostream>
using namespace std;

int main() {
    int number;
    int sum = 0;

    // take input from the user
    cout << "Enter a number: ";
    cin >> number;

    while (number >= 0) {
        // add all positive numbers
        sum += number;

        // take input again if the number is positive
        cout << "Enter a number: ";
        cin >> number;
    }

    // display the sum
    cout << "\nThe sum is " << sum << endl;

    return 0;
}

输出

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2

The sum is 25

在这个程序中,提示用户输入一个数字,该数字存储在变量 number 中。

为了存储数字的总和,我们声明了一个变量 sum 并将其初始化为 0

while 循环一直池逊,直到用户输入一个负数。在每次迭代期间,用户输入的正数都会累加到 sum 变量中。

当用户输入负数时,循环终止。最后,显示总和。

C++ do…while 循环

do...while 循环是的 while 循环的变体,他们有一个重要区别: do...while 至少循环一次后在检查条件表达式。

do...while 循环的语法是:

do {
   // body of loop;
}
while (condition);

说明

  • 首先执行一次循环体。然后判断条件表达式 condition
  • 如果 condition 计算结果为 true ,则再次执行 do 语句内的循环体。
  • 然后再次计算条件表达式 condition
  • 如果 condition 计算结果为 true ,则再次执行 do 语句内的循环体。
  • 这个过程一直持续到 condition 的计算结果为 false 。然后循环停止。

do…while 循环流程图

下图展示了 do...while 循环的处理流程:

C++ do&hellip;while 循环流程图
C++ do...while 循环流程图

示例 3:显示 1 到 5 的数字

#include <iostream>

using namespace std;

int main() {
    int i = 1;

    do {
        cout << i << " ";
        ++i;
    }
    while (i <= 5);

    return 0;
}

输出

1 2 3 4 5

这是该程序的工作原理。

迭代次数 变量 i i <= 5 操作
i = 1 没有检查 打印 1, i 增加到 2
第 1 次 i = 2 true 打印 2, i 增加到 3
第 2 次 i = 3 true 打印 3, i 增加到 4
第 3 次 i = 4 true 打印 4, i 增加到 5
第 4 次 i = 5 true 打印 5, i 增加到6
第 5 次 i = 6 false 循环终止

示例 4:仅正数之和

#include <iostream>
using namespace std;

int main() {
    int number = 0;
    int sum = 0;

    do {
        sum += number;

        // take input from the user
        cout << "Enter a number: ";
        cin >> number;
    }
    while (number >= 0);

    // display the sum
    cout << "\nThe sum is " << sum << endl;

    return 0;
}

输出 1

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2

The sum is 25

在这里, do...while 循环一直重复执行直到用户输入一个负数。当数字为负数时,循环终止;负数不会累加到 sum 变量中。

输出 2

Enter a number: -6
The sum is 0.

do...while 如果用户一开始就输入负数,循环体只运行一次。

无限循环

如果循环的条件表达式的结果总是 true ,则循环运行无限次(直到内存已满)。例如,

while(true) {
    // body of the loop
}

以下是一个无限 do...while 循环的例子。

int count = 1;

do {
   // body of loop
}
while(count == 1);

在上述程序中, 条件表达式的结果总是 true . 因此,循环体将运行无限次。

for vs while 循环

当已知迭代次数时通常使用 for 循环。例如,

// 迭代 5 次
for (int i = 1; i <=5; ++i) {
   // body of the loop
}

在这里,我们知道 for 循环将执行 5 次。

然而, whiledo...while 循环通常用于迭代次数未知的场景。例如,

while (condition) {
    // body of the loop
}