【独家】C语言100篇:从入门到天花板 第9篇 循环结构:do-while 先执行后判断的场景

张开发
2026/4/4 3:55:46 15 分钟阅读
【独家】C语言100篇:从入门到天花板 第9篇 循环结构:do-while 先执行后判断的场景
【独家】C语言100篇从入门到天花板 第9篇循环结构do-while 先执行后判断的场景作者华夏之光永存前言大家好我是华夏之光永存。欢迎继续阅读CSDN独家原创《C语言100篇从入门到天花板》。上一篇我们深度讲解了while 循环掌握了“先判断、后执行”的循环逻辑。本篇将学习do-while 循环它是C语言三大循环中唯一“先执行、后判断”的结构专门解决**“至少要执行一次”**的业务场景。全文依旧保持2000字以上高质量干货严格遵循华夏本源法则从本质出发、结构清晰、逻辑闭环、循序渐进、永不混乱。do-while 看似和 while 很像但适用场景、执行逻辑、代码稳定性完全不同。掌握它你才能写出健壮、安全、符合用户习惯的输入校验、菜单、重试逻辑。一、do-while 循环的本源为什么需要“先执行再判断”我们先思考一个真实场景让用户输入密码直到输入正确为止。如果用while 循环必须先判断条件但用户还没输入条件根本不存在这就出现了逻辑矛盾。现实中大量场景要求先做一次 → 再判断是否继续例如输入密码校验至少输一次菜单选择至少显示一次数据重试至少执行一次游戏一局至少玩一次这些场景必须用 do-whilewhile 无法优雅实现。本源总结while先判断后执行 →可能一次都不执行do-while先执行后判断 →至少执行一次二、do-while 基础语法与执行流程2.1 标准语法格式do{// 循环体至少执行一次语句块;}while(条件表达式);超级重点while 后面必须写分号 ;这是 do-while 最容易写错的地方2.2 执行流程本源级图解直接执行循环体不做任何判断执行完后计算 while 后的条件表达式如果条件为真非0→ 回到第1步再次执行循环体如果条件为假0→ 结束循环继续往下执行一句话记忆先干一次再说干完再看要不要继续。三、while 与 do-while 核心区别面试必考这是笔试、面试100%出现的题目必须背会对比项while 循环do-while 循环判断顺序先判断后执行先执行后判断执行次数0次 或 多次至少1次分号while 后无分号while 后必须有分号适用场景已知条件、次数输入校验、菜单、重试初始状态条件不满足则不执行无论条件如何先跑一遍最简单测试代码inti10;// while条件不满足一次不执行while(i5){printf(while 执行\n);}// do-while至少执行一次do{printf(do-while 执行\n);}while(i5);输出结果do-while 执行四、do-while 经典实战场景4.1 场景一密码校验最经典用法需求请用户输入密码至少输一次直到输入正确为止。#includestdio.h#includestring.hintmain(){charpassword[20];constchar*right123456;printf( 密码登录系统 \n);do{printf(请输入密码);scanf(%s,password);// 如果正确跳出循环if(strcmp(password,right)0){printf(登录成功\n);break;}else{printf(密码错误请重新输入\n);}}while(1);// 死循环直到正确才退出return0;}为什么用 do-while因为用户必须先输一次密码才能判断对错。4.2 场景二循环菜单至少显示一次菜单程序必须先显示界面再让用户选择完美匹配 do-while。#includestdio.hintmain(){intchoice;do{// 菜单至少显示一次printf(\n 学生管理系统 \n);printf(1. 添加学生\n);printf(2. 查询学生\n);printf(0. 退出系统\n);printf(请输入选项);scanf(%d,choice);// 业务处理switch(choice){case1:printf(执行添加...\n);break;case2:printf(执行查询...\n);break;case0:printf(退出成功\n);break;default:printf(输入无效请重试\n);}}while(choice!0);// 选0才退出return0;}4.3 场景三数字反转至少处理一位数输入一个整数反转输出哪怕只有一位数也要执行。#includestdio.hintmain(){intn,reverse0;printf(请输入一个整数);scanf(%d,n);do{reversereverse*10n%10;nn/10;}while(n!0);printf(反转结果%d\n,reverse);return0;}输入5输出5依然正常执行如果用 while输入 5 也能执行但0的处理会更麻烦。do-while 对一位数、零、多位数都统一兼容。五、do-while 循环三要素和 while 一致任何循环都必须遵守三要素否则必死循环循环变量初始化在 do 之前循环体逻辑do 内部循环变量更新do 内部条件判断while 后示例1~10 累加inti1;intsum0;do{sumi;i;}while(i10);六、do-while 嵌套循环套循环和 while 嵌套规则完全一样外层控制行内层控制列内层循环完整执行一遍外层才走一步示例打印 3 行 5 列星号inti1;do{intj1;do{printf(* );j;}while(j5);printf(\n);i;}while(i3);输出* * * * * * * * * * * * * * *七、do-while 高频错误99%新手必踩7.1 while 后面忘记写分号最经典do{printf(hello);}while(1)// 报错少分号规范写完 do-while第一时间补上分号。7.2 循环变量忘记更新 → 死循环inti1;do{printf(%d ,i);// 没有 i}while(i10);7.3 条件写反导致循环不退出do{...}while(i10);// 永远满足 → 死循环7.4 把 if 当循环用新手常犯只判断一次无法重复输入。八、如何选择三种循环企业级决策铁律到这里我们已经学完while / do-while即将学习 for。提前给你实战选择标准知道循环次数→for最简洁不知道次数但可能一次都不执行→while不知道次数但必须至少执行一次→do-while输入、菜单、重试本源口诀次数确定用 for先判后执用 while至少一次 do-while。九、本篇本源级核心总结do-while 是唯一“先执行、后判断”的循环至少执行一次语法do{…} while(条件);末尾必须有分号与 while 最大区别while 可能 0 次do-while 至少 1 次最佳场景密码校验、菜单、输入重试、数据反转三要素初始化、循环体、更新变量最容易错while 后少写分号、忘记修改变量导致死循环do-while 是编写稳定交互程序的必备工具是企业级代码中非常常见的结构。十、课后实战作业用 do-while 实现输入 1~100 之间的数字直到输入正确范围为止用 do-while 实现计算 1~50 的奇数和用 do-while 实现菜单循环包含 1 加法 2 减法 0 退出用 do-while 实现输入一个整数统计它是几位数用 do-while 嵌套打印直角三角形星号下期预告第10篇我们将进入循环结构for 循环——最简洁、最强大、最常用的循环之王彻底掌握固定次数循环、花式写法、循环优化它将成为你未来写代码使用率最高的语句关注钩子本专栏为CSDN独家原创《C语言100篇从入门到天花板》100篇永久固定目录、逻辑闭环、绝不跑偏、绝不断更。关注华夏之光永存带你从零基础一步到位直冲C语言天花板后续数组、函数、指针、内存、项目实战全部高能来袭

更多文章