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

在计算机编程中,循环用于重复执行一段代码。

例如,假设我们要显示一条消息 100 次。那么,我们无需写 100 次打印语句,而是可以使用循环。

这只是一个简单的例子;通过有效利用循环,我们可以在程序中实现更高的效率和更复杂的逻辑。

C++ 中有 3 种循环。

  1. for 循环
  2. while 循环
  3. do...while 循环

在上一篇教程中,我们学习了 C++ for 循环。在这里,我们将学习 whiledo...while 循环。


C++ while 循环

while 循环的语法是

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

这里,

  • while 循环会评估 condition
  • 如果 condition 的计算结果为 true,则执行 while 循环内的代码。
  • condition 再次被评估。
  • 此过程将持续进行,直到 conditionfalse
  • condition 的计算结果为 false 时,循环终止。

要了解有关 conditions 的更多信息,请访问 C++ 关系运算符和逻辑运算符


while 循环流程图

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

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

// C++ Program to print numbers from 1 to 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 <= 5 操作
第 1 次 i = 1 true 打印 1,并将 i 增加到 2
第 2 次 i = 2 true 打印 2,并将 i 增加到 3
第 3 次 i = 3 true 打印 3,并将 i 增加到 4
第 4 次 i = 4 true 打印 4,并将 i 增加到 5
第 5 个 i = 5 true 打印 5,并将 i 增加到 6
第 6 个 i = 6 false 循环终止

示例 2:仅对正数求和

// program to find the sum of positive numbers
// if the user enters a negative number, the loop ends
// the negative number entered is not added to the sum

#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 循环的主体会在检查 condition 之前执行一次。

其语法为

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

这里,

  • 首先执行循环的主体。然后评估 condition
  • 如果 condition 的计算结果为 true,则再次执行 do 语句内的循环主体。
  • condition 再次被评估。
  • 如果 condition 的计算结果为 true,则再次执行 do 语句内的循环主体。
  • 此过程将持续进行,直到 condition 的计算结果为 false。然后循环停止。

do...while 循环流程图

C++ do...while loop flowchart
C++ do...while 循环流程图

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

// C++ Program to print numbers from 1 to 5

#include <iostream>

using namespace std;

int main() {
    int i = 1; 

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

输出

1 2 3 4 5

程序的工作原理如下。

迭代 变量 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:仅对正数求和

// program to find the sum of positive numbers
// If the user enters a negative number, the loop ends
// the negative number entered is not added to the sum

#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 循环的主体只会运行一次。


无限 while 循环

如果循环的 condition 始终为 true,则循环将无限次运行(直到内存已满)。例如,

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

这是一个无限 do...while 循环的示例。

// infinite do...while loop

int count = 1;

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

在上面的程序中,condition 始终为 true。因此,循环主体将无限次运行。


for 循环与 while 循环

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

// This loop is iterated 5 times
for (int i = 1; i <=5; ++i) {
   // body of the loop
}

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

然而,whiledo...while 循环通常在迭代次数未知时使用。例如,

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

另请阅读

在结束之前,让我们来测试一下您对 C++ while 和 do...while 循环的掌握程度!您能解决下面的挑战吗?

挑战

编写一个函数来计算一个数字的阶乘。

  • 非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。
  • 例如,3 的阶乘是 3 * 2 * 1 = 6
  • 返回输入数字 num 的阶乘。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战