C do...while 语法
在 C 语言中,除了 while 语句,我们还可以使用 do...while 语句来实现循环。
语法:
do
{
……
} while (条件);说明:
do...while 语句首先是无条件执行循环体一次,然后再判断是否符合条件。如果符合条件,则重复执行循环体;如果不符合条件,则退出循环。
do...while 语句跟 while 语句是非常相似的,并且任何一个都可以转换成等价的另外一个。
do...while 语句结尾处括号后有一个分号(;),该分号一定不能省略,这是初学者最容易忽略的一点,大家一定要记得!
C do...while 示例
接下来,我们通过一个简单的例子来讲解一下 do...while 循环是如何使用的。
示例 1:do...while 计算 1 + 2 + 3 + … + 100 的和
#include <stdio.h>
int main(void)
{
int n = 1;
int sum = 0;
do
{
sum += n; // 等价于 sum = sum + n;
n++; // 等价于 n = n + 1;
} while (n <= 100);
printf("1 + 2 + 3 + ... + 100 = %d", sum);
return 0;
}运行结果如下。
1 + 2 + 3 + ... + 100 = 5050分析:
对于上面例子来说,如果使用流程图来表示,效果如下图所示。

将这个例子与上一节(C while 循环)的例子对比,我们可以总结出以下 2 点。
- while 循环和 do...while 循环是可以互相转换的,但它们侧重的场景不同。建议小伙伴们重点掌握 while,但也必须理解 do...while 的执行机制。
- while 循环是 “先判断、后循环”,而 do...while 循环是 “先循环、后判断”,这是两者本质上的区别。其中,do...while 循环中的循环体至少会被执行一次,即使初始条件不满足。
C do...while 的适用场景
在实际开发中,我们大多数情况下都是用 while 循环,而不是用 do...while 循环,主要是 do...while 循环会先无条件执行一次循环,有时候用得不好的话,这个特点会导致执行一次不该执行的循环。
虽然 while 循环更常用,但在某些情况下,do...while 循环会更加方便和自然。比如需要先执行一次操作,然后再根据结果判断是否继续循环的场景。
示例 2:do...while 用于判断用户密码
#include <stdio.h>
int main(void)
{
int password;
do
{
printf("请输入密码(4 位数):");
scanf("%d", &password);
} while (password < 1000 || password > 9999);
printf("密码输入正确!\n");
return 0;
}编译并运行之后,输入 “6666”,其结果如下:
请输入密码(4 位数):6666 密码输入正确!分析:
从用户那里读取输入,需要先读取一次,然后判断输入是否有效,如果无效则继续要求用户输入。像这种情况使用 do...while 循环会更加方便一些。
