C语言分支与循环语句详解:从入门到精通

发布时间:2026/11/14 11:27:31

C语言分支与循环语句详解:从入门到精通 1. 引言C语言作为一门经典的结构化编程语言其流程控制语句是构建程序逻辑的基石。分支和循环语句共同构成了程序的控制流使程序能够根据条件执行不同的代码路径或者重复执行特定的任务。掌握这些语句是学习C语言编程的关键一步。本文将系统讲解C语言中的分支语句if、if-else、switch和循环语句while、do-while、for通过丰富的代码示例帮助读者深入理解其语法、执行流程和实际应用场景。2. 分支语句分支语句允许程序根据条件表达式的真假值选择执行不同的代码块实现决策逻辑。2.1 if 语句if语句是最基本的分支结构当条件为真时执行指定的代码块。语法if(condition){// 条件为真时执行的语句}示例判断一个数是否为正数#includestdio.hintmain(){intnum10;if(num0){printf(%d 是正数。\n,num);}return0;}2.2 if-else 语句if-else语句在条件为真时执行一个代码块为假时执行另一个代码块。语法if(condition){// 条件为真时执行的语句}else{// 条件为假时执行的语句}示例判断奇偶数#includestdio.hintmain(){intnum7;if(num%20){printf(%d 是偶数。\n,num);}else{printf(%d 是奇数。\n,num);}return0;}2.3 else-if 阶梯当需要判断多个条件时可以使用else if构建多分支结构。语法if(condition1){// 条件1为真时执行}elseif(condition2){// 条件2为真时执行}elseif(condition3){// 条件3为真时执行}else{// 所有条件都为假时执行}示例成绩等级评定#includestdio.hintmain(){intscore85;if(score90){printf(成绩等级A\n);}elseif(score80){printf(成绩等级B\n);}elseif(score70){printf(成绩等级C\n);}elseif(score60){printf(成绩等级D\n);}else{printf(成绩等级F不及格\n);}return0;}2.4 switch 语句switch语句根据表达式的值跳转到匹配的case标签处执行适用于多路分支选择。语法switch(expression){caseconstant1:// 语句break;caseconstant2:// 语句break;// 更多 case...default:// 默认语句}重要规则expression必须是整型或字符型表达式case后的常量必须是整型常量或字符常量break语句用于跳出switch否则会“穿透”执行下一个casedefault是可选的当没有匹配的case时执行示例根据星期数输出星期名称#includestdio.hintmain(){intday3;switch(day){case1:printf(星期一\n);break;case2:printf(星期二\n);break;case3:printf(星期三\n);break;case4:printf(星期四\n);break;case5:printf(星期五\n);break;case6:printf(星期六\n);break;case7:printf(星期日\n);break;default:printf(无效的星期数\n);}return0;}case 穿透示例#includestdio.hintmain(){intmonth2;intdays0;switch(month){case1:case3:case5:case7:case8:case10:case12:days31;break;case4:case6:case9:case11:days30;break;case2:days28;// 不考虑闰年break;default:printf(无效的月份\n);return1;}printf(%d 月有 %d 天\n,month,days);return0;}3. 循环语句循环语句用于重复执行一段代码直到满足特定条件为止。3.1 while 循环while循环在条件为真时重复执行循环体先判断条件后执行。语法while(condition){// 循环体语句}// while 死循环模板while(1){// 循环体// 需要使用 break 语句退出循环}**示例计算1到10的和**c#includestdio.hintmain(){inti1;intsum0;while(i10){sumi;i;// 不要忘记更新循环变量否则会导致无限循环}printf(1到10的和为%d\n,sum);return0;}3.2 do-while 循环do-while循环先执行一次循环体然后判断条件条件为真则继续循环。至少执行一次。语法do{// 循环体语句}while(condition);// do-while 死循环模板do{// 循环体// 需要使用 break 语句退出循环}while(1);**示例用户输入验证**c#includestdio.hintmain(){intnumber;do{printf(请输入一个正数);scanf(%d,number);if(number0){printf(输入错误请重新输入\n);}}while(number0);printf(您输入的正数是%d\n,number);return0;}3.3 for 循环for循环是最常用的循环结构将初始化、条件判断和更新三个部分集中在一行。语法for(initialization;condition;update){// 循环体语句}// for 死循环模板for(;;){// 循环体// 需要使用 break 语句退出循环}执行流程执行初始化表达式只执行一次检查条件表达式如果为假则退出循环执行循环体执行更新表达式返回第2步示例打印乘法表#includestdio.hintmain(){printf(九九乘法表\n);for(inti1;i9;i){for(intj1;ji;j){printf(%d×%d%-2d ,j,i,i*j);}printf(\n);}return0;}for 循环的变体// 多个初始化或更新表达式for(inti0,j10;ij;i,j--){printf(i%d, j%d\n,i,j);}4. 循环控制语句4.1 break 语句break语句用于立即终止所在的最内层循环或switch语句。示例在数组中查找元素#includestdio.hintmain(){intnumbers[]{2,4,6,8,10,12,14,16,18,20};inttarget12;intfound0;for(inti0;i10;i){if(numbers[i]target){printf(找到目标值 %d索引为 %d\n,target,i);found1;break;// 找到后立即退出循环}}if(!found){printf(未找到目标值 %d\n,target);}return0;}4.2 continue 语句continue语句跳过当前循环的剩余部分直接进入下一次循环的条件判断。示例打印1-10中的奇数#includestdio.hintmain(){for(inti1;i10;i){if(i%20){continue;// 如果是偶数跳过本次循环}printf(%d ,i);}printf(\n);return0;}5. 嵌套结构分支和循环语句可以相互嵌套构建复杂的程序逻辑。5.1 嵌套分支示例判断闰年#includestdio.hintmain(){intyear;printf(请输入年份);scanf(%d,year);if(year%40){if(year%1000){if(year%4000){printf(%d 年是闰年。\n,year);}else{printf(%d 年不是闰年。\n,year);}}else{printf(%d 年是闰年。\n,year);}}else{printf(%d 年不是闰年。\n,year);}return0;}5.2 嵌套循环示例打印金字塔图案#includestdio.hintmain(){introws5;for(inti1;irows;i){// 打印空格for(intj1;jrows-i;j){printf( );}// 打印星号for(intk1;k(2*i-1);k){printf(*);}printf(\n);}return0;}6. 常见应用场景**示例菜单驱动程序#includestdio.hintmain(){intchoice;do{printf(\n 学生管理系统 \n);printf(1. 添加学生\n);printf(2. 删除学生\n);printf(3. 查询学生\n);printf(4. 退出系统\n);printf(请选择操作);scanf(%d,choice);switch(choice){case1:printf(执行添加学生功能...\n);break;case2:printf(执行删除学生功能...\n);break;case3:printf(执行查询学生功能...\n);break;case4:printf(感谢使用再见\n);break;default:printf(无效选择请重新输入\n);}}while(choice!4);return0;}7. 最佳实践与注意事项7.1 代码可读性使用恰当的缩进和空格添加必要的注释避免过深的嵌套一般不超过3层使用有意义的变量名7.2 常见错误忘记更新循环变量导致无限循环误用赋值运算符if (x 5)而不是if (x 5)缺少 break 语句在switch中导致 case 穿透循环条件错误for (int i 0; i 10; i--)导致无限循环浮点数相等比较避免if (x 0.1)应使用if (fabs(x - 0.1) 0.00001)7.3 性能考虑将不变的计算移到循环外减少循环内的函数调用使用i代替i对于内置类型无区别但对自定义类型有性能差异8. 总结C语言的分支和循环语句是构建程序逻辑的核心工具分支语句if、if-else、switch让程序能够根据条件做出决策循环语句while、do-while、for让程序能够重复执行任务控制语句break、continue提供了更精细的流程控制掌握这些语句的语法、执行流程和适用场景是编写高效、可读C程序的基础。建议读者通过大量练习来巩固这些概念从简单的示例开始逐步构建更复杂的程序逻辑。在实际编程中应根据具体需求选择最合适的控制结构并始终注意代码的可读性和维护性。
延伸阅读

更多相关文章

2026/11/12 16:58:39

智能体技能开发实战:从天气查询到多模态输出

1. 什么是Agent Skills?Agent Skills(智能体技能)本质上是一组可复用的功能模块,让AI智能体具备完成特定任务的能力。就像给机器人安装不同的工具包——拧螺丝需要电动起子,切割金属需要激光刀,每个技能都对…

2026/11/12 17:15:21

央企合同治理新规:穿透式监管与智能合同管理实践

1. 央企合同治理新规深度解读最近一份编号46的监管文件在央企系统内引发广泛讨论,这份关于合同治理的新规最引人注目的就是提出了"穿透式监管"这一创新理念。作为在央企法务部门工作十余年的从业者,我深刻感受到这不仅是简单的流程调整&#x…

2026/11/13 12:37:17

整理infrared热点(二)

#long-distance-relationship #突然很确信我们有些地方有点像蜘蛛侠与格温 三、具有尺度和位置敏感性的红外小目标检测Infrared Small Target Detection with Scale and Location Sensitivity 插曲 去了解一下特征融合-发现是深度学习里的 【极致中配】Stanford CS231N 计算…

2026/11/14 11:23:17

小厂需要电工证吗千万别踩坑实操考试心里没底怕挂科

小厂需要电工证吗千万别踩坑实操考试心里没底怕挂科 你是不是也这样,看到电工证报名就心慌?实操考试心里没底怕挂科,担心自己搞不定那些专业设备,一不小心就掉链子?尤其是像我们这种在小厂上班的,天天和电打交道,但就是不知道到底要不要考这个证,考了…

2026/11/14 11:23:17

苏州哪里考电工证好哪家培训含金量高

苏州哪里考电工证好哪家培训含金量高 工地太忙根本没时间复习考试,电工证又不能拖,不然影响项目进度,还耽误工资。苏州哪里考电工证好?哪家培训机构的证书含金量高?这些问题,咱们今天就一次性说清楚。 为什么电工证在苏州特别火?…

2026/11/14 11:23:17

济南怎么考电工证多少钱?实操考试心里没底怕挂科

济南怎么考电工证多少钱?实操考试心里没底怕挂科 实操考试心里没底怕挂科,这是很多想考电工证的朋友最真实的担忧。特别是在济南,电工证的报考门槛和考试难度让不少考生望而却步。 多少钱…

2026/11/14 11:18:17

万州高低压电工证过期了怎么处理?上岗必备全流程解析

万州高低压电工证过期了怎么处理?上岗必备全流程解析 证书过期了不知道怎么复审延期,这事儿可太常见了。很多电工朋友拿着证上岗,结果一不留神就过了有效期,找人问、自己查,结果越查越懵,甚至还有人被“黑中介”骗了钱。今天咱们就从万州高低压电工证的…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑