跳到主要内容

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

提示
  1. while和do...while循环:C++中的while循环在条件为真时重复执行代码块,而do...while循环至少执行一次代码块后再检查条件。
  2. 循环的工作方式:在while循环中,首先评估条件,如果为真则执行循环体,然后再次评估条件;在do...while循环中,循环体先执行一次,然后评估条件。
  3. 循环的应用场景for循环通常用于已知迭代次数的场景,而whiledo...while循环适用于迭代次数未知的情况。

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

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

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

C++ 中有 3 种类型的循环。

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

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

C++ while 循环

while 循环的语法是:

while (condition) {
// 循环的主体
}

这里,

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

要了解更多关于 conditions,请访问 C++ 关系和逻辑运算符。

while 循环的流程图

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 = 1true打印 1 并将 i 增加到 2
第二次i = 2true打印 2 并将 i 增加到 3
第三次i = 3true打印 3 并将 i 增加到 4
第四次i = 4true打印 4 并将 i 增加到 5
第五次i = 5true打印 5 并将 i 增加到 6
第六次i = 6false循环终止

示例 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 循环的流程图

C++ 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 = 2true打印 2 并将 i 增加到 3
第二次i = 3true打印 3 并将 i 增加到 4
第三次i = 4true打印 4 并将 i 增加到 5
第四次i = 5true打印 5 并将 i 增加到 6
第五次i = 6false循环终止

示例 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次。

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

while (condition) {
// 循环体
}

查看这些示例以了解更多: