dowhile 循环语句核心特点是先执行一次循环体内代码,之后再判断循环条件,只要条件成立就继续重复执行,这一点和普通 while 循环有本质区别,普通 while 是先判断条件,条件不满足的时候循环体一次都不会运行,dowhile 天然保证循环体至少执行一轮,这个特性非常适合菜单交互输入校验这类场景,比如让用户输入数字,不管用户第一次输入是什么,都先执行输入动作,再判断输入是否合法,不合法就继续提示重新输入,很多初学者容易混淆 dowhile 和 while 的执行顺序,写代码的时候经常忘记末尾分号,造成编译报错,掌握基础语法之后,再通过多个实战例子理解变量自增累加求和输入校验嵌套用法,同时理解死循环跳出方式,就能熟练运用 dowhile 循环语句完成对应的业务逻辑开发。
一 dowhile 循环基础语法
dowhile 标准书写结构,先写 do,后面紧跟大括号包裹循环体,大括号结束之后写 while,括号里面填写循环判断条件,条件末尾必须加分号,这个分号是 dowhile 独有的易错点,普通 while 循环后面不需要分号,很多新手写 dowhile 的时候漏掉分号直接编译失败。
执行顺序固定为 进入 do 执行循环体 计算 while 括号内条件 条件为真回到 do 继续执行 条件为假退出循环。
二 基础入门例子
例子 1 累加求和,计算 1 到 10 的数字总和
int i = 1;
int sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 10);
运行过程,i 初始值是 1,先进入循环累加,然后 i 自增,再判断 i 是否小于等于 10,满足就继续循环,最终 sum 结果是 55。
例子 2 数字打印,循环输出 1 到 5
int num = 1;
do
{
printf("%d ",num);
num++;
}
while(num <=5);
三 进阶实战例子
例子 1 用户输入校验,要求用户输入大于 0 的整数,输入错误就反复提示重输
int input;
do
{
printf("请输入大于0的整数");
scanf("%d",&input);
}
while(input <= 0);
这个例子就是 dowhile 最典型应用,不管第一次输入是否合格,都会先执行一次输入,再做判断,相比 while 写法更加简洁。
例子 2 菜单选择循环,程序启动之后持续展示菜单,直到用户选择退出选项
int choice;
do
{
printf("1 查询 2 修改 0 退出");
scanf("%d",&choice);
}
while(choice != 0);
四 dowhile 和 while 对比表格
| 对比项 | dowhile 循环 | while 循环 |
|---|---|---|
| 判断时机 | 循环体执行之后判断 | 循环体执行之前判断 |
| 最低执行次数 | 至少执行 1 次 | 可以 0 次都不执行 |
| 适用场景 | 输入校验 菜单交互 | 预先知道条件是否成立的循环 |
| 语法特点 | while 后面必须加分号 | while 后面不需要分号 |
五 常见坑点说明
第一 死循环,循环体内忘记修改循环变量,比如 i 一直不变,while 条件永远成立,dowhile 就会无限运行,需要搭配 break 语句跳出循环。
第二 漏写 while 后面分号,编译器直接报错。
第三 循环变量初始化位置错误,初始化写在 do 内部,每次循环变量都会重置,达不到预期循环效果。
【常见问题】
问题 1 dowhile 循环语句例子里面 dowhile 最少执行几次
回答 1 dowhile 循环语句例子里面 dowhile 最少执行 1 次,因为它是先执行循环体,再判断条件,哪怕初始条件已经不成立,循环体也会运行一轮,这是 dowhile 循环语句例子最核心特征。
问题 2 dowhile 循环语句例子为什么 while 后面要加分号
回答 2 dowhile 循环语句例子里面 while 后面加分号是语法要求,dowhile 是完整语句,while 括号条件属于这条语句末尾,不加这个分号会编译报错,这也是 dowhile 循环语句例子最常见错误。
问题 3 dowhile 循环语句例子可以使用 break 跳出吗
回答 3 dowhile 循环语句例子里面可以正常使用 break 语句,在循环体内部执行到 break 就会直接终止 dowhile 循环,不再判断 while 后面条件,适合菜单循环里面强制退出场景。
问题 4 dowhile 循环语句例子和 while 循环能不能互相替换
回答 4 dowhile 循环语句例子里面 dowhile 和 while 可以改写互相替换,但是 dowhile 至少执行一次这个特性,如果强行改成 while,需要额外增加一次前置代码,代码可读性会下降,适合输入校验场景优先选用 dowhile 循环语句例子写法。
【免责申明】
本文 dowhile 循环语句例子以 C 语言作为演示,其他编程语言语法大体一致但是细节存在差异,内容仅用于编程学习参考,不保证适配所有编译器环境,实际开发请参考对应语言官方文档,因代码运行产生的相关风险由使用者自行承担。
