C++ while和do...while循环
while
循环在条件为真时重复执行代码块,而
do...while
循环至少执行一次代码块后再检查条件。
while
循环中,首先评估条件,如果为真则执行循环体,然后再次评估条件;在
do...while
循环中,循环体先执行一次,然后评估条件。
for
循环通常用于已知迭代次数的场景,而
while
和
do...while
循环适用于迭代次数未知的情况。
在计算机编程中,循环用于重复执行一段代码。
例如,假设我们想要显示一条信息 100 次。那么,我们可以使用循环,而不是写 100 次打印语句。
这只是一个简单的例子;通过有效利用循环,我们的程序可以更加高效和复杂。
C++ 中有 3 种类型的循环。
for
循环
while
循环
do...while
循环
在上一个教程中,我们学习了
C++ for 循环
。这里,我们将学习
while
和
do...while
循环。
C++ while 循环
while
循环的语法是:
while (condition) {
// 循环的主体
}
while
循环评估
condition
condition
评估为
true
,则执行
while
循环内的代码。
condition
再次被评估。
condition
为
false
。
condition
评估为
false
时,循环终止。
要了解更多关于
conditions
,请访问 C++ 关系和逻辑运算符。
while 循环的流程图
示例 1:显示 1 到 5 的数字
// C++ 程序,打印从 1 到 5 的数字
#include <iostream>
using namespace std;
int main() {
int i = 1;
// 从 1 到 5 的 while 循环
while (i <= 5) {
cout << i << " ";
++i;
}
return 0;
}
1 2 3 4 5
程序是这样运行的。
迭代 | 变量 |
i <= 5
|
行动 |
---|---|---|---|
第一次 |
i = 1
|
true
|
打印 1 并将
i
增加到
2
。
|
第二次 |
i = 2
|
true
|
打印 2 并将
i
增加到
3
。
|
第三次 |
i = 3
|
true
|
打印 3 并将
i
增加到
4
|
第四次 |
i = 4
|
true
|
打印 4 并将
i
增加到
5
。
|
第五次 |
i = 5
|
true
|
打印 5 并将
i
增加到
6
。
|
第六次 |
i = 6
|
false
|
循环终止 |
示例 2:只求正数的和
// 程序用于求正数的和
// 如果用户输入一个负数,则循环结束
// 输入的负数不加入总和
#include <iostream>
using namespace std;
int main() {
int number;
int sum = 0;
// 用户输入
cout << "输入一个数字: ";
cin >> number;
while (number >= 0) {
// 添加所有正数
sum += number;
// 如果数字为正,再次输入
cout << "输入一个数字: ";
cin >> number;
}
// 显示总和
cout << "\n总和是 " << sum << endl;
return 0;
}
输入一个数字: 6
输入一个数字: 12
输入一个数字: 7
输入一个数字: 0
输入一个数字: -2
总和是 25
在这个程序中,提示用户输入一个数字,该数字存储在变量 number 中。
为了存储数字的总和,我们声明了一个变量 sum 并将其初始化为
0
。
只要用户输入的数字是正数,
while
循环就会继续。在每次迭代中,用户输入的数字被添加到 sum 变量中。
当用户输入负数时,循环终止。最后,显示总和。
C++ do...while 循环
do...while
循环是
while
循环的变体,它有一个重要区别:
do...while
循环的主体在检查
condition
之前会先执行一次。
其语法是:
do {
// 循环的主体;
}
while (condition);
condition
。
condition
评估为
true
,则再次执行
do
语句内的循环主体。
condition
。
condition
评估为
true
,则再次执行
do
语句内的循环主体。
condition
评估为
false
。然后循环停止。
do...while 循环的流程图
示例 3:显示 1 到 5 的数字
// C++ 程序,打印从 1 到 5 的数字
#include <iostream>
using namespace std;
int main() {
int i = 1;
// 从 1 到 5 的 do...while 循环
do {
cout << i << " ";
++i;
}
while (i <= 5);
return 0;
}
1 2 3 4 5
程序是这样运行的。
迭代 | 变量 |
i <= 5
|
行动 |
---|---|---|---|
i = 1
|
未检查 |
打印 1 并将
i
增加到 2
|
|
第一次 |
i = 2
|
true
|
打印 2 并将
i
增加到 3
|
第二次 |
i = 3
|
true
|
打印 3 并将
i
增加到 4
|
第三次 |
i = 4
|
true
|
打印 4 并将
i
增加到 5
|
第四次 |
i = 5
|
true
|
打印 5 并将
i
增加到
6
|
第五次 |
i = 6
|
false
|
循环终止 |
示例 4:仅计算正数之和
// 程序用于查找正数的总和
// 如果用户输入一个负数,循环结束
// 输入的负数不加入总和中
#include <iostream>
using namespace std;
int main() {
int number = 0;
int sum = 0;
do {
sum += number;
// 从用户那里获取输入
cout << "输入一个数字: ";
cin >> number;
}
while (number >= 0);
// 显示总和
cout << "\n总和是 " << sum << endl;
return 0;
}
输入一个数字: 6
输入一个数字: 12
输入一个数字: 7
输入一个数字: 0
输入一个数字: -2
总和是 25
在这里,
do...while
循环持续进行,直到用户输入一个负数。当数字是负数时,循环终止;负数不会被加入到
sum
变量中。
输入一个数字: -6
总和是 0.
如果用户一开始就输入一个负数,
do...while
循环体仅运行一次。
无限while循环
如果循环的
条件
总是
true
,循环将无限次运行(直到内存满)。例如,
// 无限while循环
while(true) {
// 循环体
}
这是一个无限
do...while
循环的例子。
// 无限do...while循环
int count = 1;
do {
// 循环体
}
while(count == 1);
在上述程序中,
条件
总是
true
。因此,循环体将无限次运行。
for循环与while循环的对比
当迭代次数已知时,通常使用
for
循环。例如,
// 这个循环迭代了5次
for (int i = 1; i <=5; ++i) {
// 循环体
}
在这里,我们知道for循环将执行5次。
然而,当迭代次数未知时,通常使用
while
和
do...while
循环。例如,
while (condition) {
// 循环体
}
查看这些示例以了解更多: