C++ while和do...while循环
- while和do...while循环:C++中的
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;
}
输出1
输入一个数字: 6
输入一个数字: 12
输入一个数字: 7
输入一个数字: 0
输入一个数字: -2
总和是 25
在这里,do...while
循环持续进行,直到用户输入一个负数。当数字是负数时,循环终止;负数不会被加入到sum
变量中。
输出2
输入一个数字: -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) {
// 循环体
}
查看这些示例以了解更多: