C++ while 和 do...while 循环
在本文中,我们讨论了 C++ 中的 while
和 do...while
循环。
在编程中,循环用于在满足指定的条件下重复的执行一段代码。
例如,假设我们要显示一条消息 100 次。然后我们可以使用循环而不是编写 100 次打印语句。
C++ 中有 3 种类型的循环。
for
循环while
循环do...while
循环
在前面,我们介绍过 for
循环。在本文中,我们要讨论的是 while
和 do...while
循环。
C++ while 循环
while
循环的语法是:
while (condition) {
// body of the loop
}
说明:
condition
是while
循环计算条件表达式。- 如果
condition
计算结果为true
,则执行while
循环内的代码。 - 然后继续计算
condition
条件表达式。 - 这个过程一直持续到条件表达式的计算结果为
false
。 - 当
condition
计算为false
时,循环终止。
while 循环流程图
下图展示了 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 |
打印 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:仅正数之和
#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
循环的处理流程:
示例 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
次。
然而, while
与 do...while
循环通常用于迭代次数未知的场景。例如,
while (condition) {
// body of the loop
}