在 C 语言的循环结构中,do-while循环以其 "先执行后判断" 的特性独树一帜。它确保循环体至少执行一次,这在处理用户输入验证、菜单交互等场景中具有不可替代的优势。本文将从语法规则、执行流程、实战案例等多个维度深入解析do-while循环,帮助掌握其核心用法。
一、do-while 循环的语法与执行流程
1.1 基本语法结构
do
{
// 循环体语句
}
while (条件表达式); // 注意末尾的分号不可省略
1.2 执行流程解析
- 第一步:先执行一次循环体中的语句
- 第二步:计算
while后的条件表达式 - 第三步:若条件为真(非 0 值),则返回第一步继续执行;若为假(0 值),则终止循环
关键特性:无论条件是否成立,循环体至少执行一次。这是do-while与while循环的本质区别。
二、实战案例解析
案例 1:计算 1 到 10 的累加和(至少执行一次的循环)
int main()
{
int i = 1;
int sum = 0;
do {
sum += i; // 累加操作
i++; // 迭代变量更新
}
while (i <= 10); // 当i>10时终止循环
printf("1到10的和为:%d\n", sum); // 输出结果:55
return 0;
}
执行过程:
- 首次执行循环体,
sum=1,i=2 - 检查条件
2<=10成立,继续循环 - 直到
i=11时条件不成立,循环终止,输出结果。
案例 2:用户输入验证(确保至少一次输入)
int main()
{
int num = 0;
do
{
printf("请输入1-100之间的整数:");
scanf("%d", &num);
}
while (num < 1 || num > 100); // 输入不合法时继续循环
printf("输入的合法数字为:%d\n", num);
return 0;
}
应用场景:
- 当需要强制用户进行至少一次输入,并对输入进行校验时
- 相比
while循环,无需额外处理第一次输入的特殊情况
三、do while循环中的break和continue
1.break
break语句用于立即终止当前所在的循环,跳出循环体,程序将继续执行循环之后的语句。在do-while循环里,无论while后面的条件是否为真,只要执行到break语句,循环就会马上结束。
int main()
{
int i = 1;
do
{
if (5 == i)
break;
printf("%d ", i);
i++;
}
while (i < 10);
return 0;
}

当循环执行至i=5时,进入if语句,遇到break跳出循环。
2.continue
continue语句的作用是跳过当前循环体中剩余的语句,直接进入下一次循环的条件判断。在do-while循环中,当执行到continue语句时,程序会忽略continue后面的语句,直接跳转到while语句处进行条件判断,如果条件为真,则继续执行下一次循环。
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i++;
}

由于当i=5时,进入if语句之后遇到continue会跳过后续程序,i值不更新,因此一直处于死循环之中。若将i++改到if语句前,其结果如下:

2139

被折叠的 条评论
为什么被折叠?



