在计算机编程中,循环用于重复执行一段代码。
例如,假设我们要显示一条消息 100 次。那么,我们无需写 100 次打印语句,而是可以使用循环。
这只是一个简单的例子;通过有效利用循环,我们可以在程序中实现更高的效率和更复杂的逻辑。
C++ 中有 3 种循环。
for
循环while
循环do...while
循环
在上一篇教程中,我们学习了 C++ for 循环。在这里,我们将学习 while
和 do...while
循环。
C++ while 循环
while
循环的语法是
while (condition) {
// body of the loop
}
这里,
while
循环会评估condition
- 如果
condition
的计算结果为true
,则执行while
循环内的代码。 condition
再次被评估。- 此过程将持续进行,直到
condition
为false
。 - 当
condition
的计算结果为false
时,循环终止。
要了解有关 conditions
的更多信息,请访问 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 循环流程图

示例 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 次。
然而,while
和 do...while
循环通常在迭代次数未知时使用。例如,
while (condition) {
// body of the loop
}
另请阅读