版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言第六章循环控制while·do-while·for·循环嵌套与流程控制Contents本章目录01循环结构概述02三种循环语句详解03循环嵌套04循环流程控制05综合实战与总结CHAPTER01循环结构概述从重复执行到自动化——理解循环的本质与设计思想PROGRAMMINGFUNDAMENTALS为什么需要循环结构循环结构是程序设计中处理重复性任务的核心机制,它让程序员用极少的代码实现大量重复操作,是提升编程效率与代码可读性的基础工具。大学编程课堂教学场景01不用循环打印50个星号需写50行printf语句,使用while循环仅需3行代码即可完成,效率提升超过90%3/5002计算1+2+3+…+100的累加和,手工展开需写出完整表达式,循环结构通过变量自增自动完成100次迭代Σ10003批量处理学生成绩统计、文件逐行读取、数组遍历等场景,本质上都是"条件满足时重复执行"的模式批量处理04循环结构与顺序结构、选择结构并列为程序设计三大基本控制结构,是构建复杂算法的基石三大结构Fundamentals程序设计三大控制结构顺序、选择、循环三大控制结构是结构化程序设计的基石,任何复杂算法都可以由这三种基本结构组合而成,理解它们的区别与联系是掌握循环的前提。顺序结构代码自上而下逐行执行,无跳转无重复,是最基础的执行方式。程序按照语句书写的先后顺序依次执行,每条语句必定执行且仅执行一次。线性执行无分支输入→计算→输出SEQUENTIAL选择结构根据条件真假决定执行哪条分支,包括if-else和switch-case两种形式。通过条件判断实现程序流程的分支控制,使程序具备决策能力。条件判断分支执行判断等级,每次只走一条路径CONDITIONAL循环结构在条件满足时反复执行同一段代码,直到条件不满足才退出。循环结构让程序能够高效处理批量数据和重复性任务,大幅提升代码复用性。重复执行条件终止重复录入、遍历数组、持续接收ITERATIVELOOPSTRUCTURE循环结构的四个核心要素无论使用哪种循环语句,都必须包含初始化、条件判断、循环体和变量更新四个要素,缺少任何一个都可能导致逻辑错误或死循环。01循环变量初始化在进入循环之前给控制变量赋初始值,确定循环的起点i=102循环条件判断每次迭代前检查布尔表达式,为真则继续执行、为假则退出循环i<=10003循环体被重复执行的代码块,包含实际业务逻辑,如累加求和、数据录入等业务逻辑04循环变量更新在循环体内修改控制变量,使循环逐步趋向终止条件,避免死循环i++CHAPTER02三种循环语句详解while·do-while·for的语法、流程与典型应用SYNTAX&FLOWwhile语句:语法与执行流程while循环属于"当型循环",先判断条件再决定是否执行循环体,条件初始即为假时循环体一次也不执行,适用于循环次数不确定的场景。一般形式while(表达式){循环体语句},先计算表达式值,为真(非0)则执行循环体,为假(0)则跳出循环先判后执分号陷阱while(表达式)后面严禁加分号,否则分号成为空循环体,导致死循环或逻辑错误禁加分号复合语句循环体含多条语句时必须用花括号{}组成复合语句,不加花括号则while仅控制紧随其后的第一条语句花括号{}终止条件循环体内必须包含使表达式趋向为假的语句(如i++),否则条件永远为真,陷入死循环趋向为假while循环经典实例通过打印星号和累加求和两个基础案例,可以掌握while循环在'重复输出'和'迭代计算'两大场景中的标准写法与变量控制技巧。01打印50个星号设i=50,while(i>0)内执行printf("*")和i--,每次迭代输出一个星号并递减计数,共执行50次50次迭代02求1+2+…+100设sum=0、i=1,while(i<=100)内执行sum=sum+i和i++,循环结束后sum值为5050sum=505003共同模式初始化计数器→条件判断→执行操作→更新计数器,四步缺一不可四步模式04常见错误忘记写i++或i--导致死循环;sum未初始化为0导致结果不可预期i++/i--WHILELOOP·PRACTICEwhile实战:学生成绩统计学生成绩统计是循环结构最典型的应用场景之一,通过while循环实现重复录入、累加求和、计算平均分的完整数据处理流程。01循环初始化定义i=1、sum=0作为循环计数器和累加器,while(i<=10)控制循环恰好执行10次i<=1002循环体执行循环体内通过scanf读入成绩存入score变量,再执行sum=sum+score累加,i++推进计数sum+=score03结果计算循环结束后ave=sum/10.0计算平均分,注意必须除以10.0(浮点数)而非10,避免整数除法截断小数÷10.004条件扩展若要同时统计及格人数,可在循环体内增加if(score>=60)count++的条件判断score≥60ProgrammingFundamentalswhile实战:求n的阶乘阶乘计算展示了while循环在数学迭代中的应用,同时涉及边界条件处理、数据类型选择和累乘器初始化等关键编程技巧。数据溢出n!=1×2×…×n增长极快,13!即超出int范围上限,需选用float或longlong类型存储。阶乘是递归与迭代的经典案例,理解其数值特性对算法设计至关重要。13!边界处理0!=1且1!=1,用if(n==0||n==1)单独判断并直接输出结果,避免进入循环。边界条件的正确处理是程序健壮性的基础,能防止无效计算和逻辑错误。0!=1累乘逻辑fac初始化为1,while(i<=n)内执行fac=fac*i与i++,逐次累乘得最终值。循环变量的同步更新是关键,确保每次迭代都正确推进计算过程。fac=1常见陷阱累加器sum初始化为0用加法,累乘器fac初始化为1用乘法,混淆是常见bug。牢记累乘的初始值为1而非0,这是初学者最容易忽视的细节。sumvsfacSyntax&Executiondo-while语句:语法与执行流程do-while属于"直到型循环",先执行循环体再判断条件,保证循环体至少执行一次,适用于"至少执行一次"的场景。语法结构一般形式为do{循环体}while(表达式);,先执行循环体,再计算表达式,为真则继续、为假则退出。循环体可以是单条语句或复合语句块。do{statements}while(condition);核心区别while先判断后执行(可能0次),do-while先执行后判断(至少1次)。选择取决于是否需要保证首次执行,这是两种循环结构的关键差异。≥1次执行保证分号规则while(表达式)后的分号是do-while语句的结束标志,不能省略;而while语句的表达式后不能加分号,否则会造成逻辑错误。;required关键字约束do是C语言关键字,必须与while联合使用;循环体含多条语句时需用花括号{}括起形成复合语句。do↔whilepairedkeywordsLOOPCOMPARISONdo-while实例与while对比通过同一案例的两种实现对比,可以清晰理解do-while"至少执行一次"的特性,以及它与while在初始条件为假时的行为差异。01成绩统计do-while版:do{scanf读入;sum累加;i++;}while(i<=10);语法上与while版的区别在于条件判断后置语法对比02初始条件为真时(如i=1,i<=10),do-while与while执行次数完全相同,结果一致i=103初始条件为假时(如i=20,i<=10),while循环0次、sum保持0;do-while循环1次、sum读入了一个数据i=2004典型适用场景:用户输入验证(至少提示一次)、菜单系统(至少显示一次菜单)、数据至少处理一条的情况场景CLANGUAGE·CONTROLFLOWfor语句:语法与执行流程for循环将初始化、条件判断和变量更新三个要素集中在一个语句中,结构紧凑、逻辑清晰,是C语言中最常用的循环形式。一般形式for(表达式1;表达式2;表达式3){循环体},三个表达式分别对应初始化、条件判断、变量更新三段式执行顺序表达式1(仅一次)→判断表达式2→为真则执行循环体→执行表达式3→回到判断表达式2先判后执当型循环for循环属于当型循环(先判断后执行),与while本质相同,但将循环三要素集中在一行,代码更紧凑同族等价表达式省略省略表达式1需在循环前初始化;省略表达式2则条件永真(死循环);省略表达式3需在循环体内更新变量灵活变体LoopVariantsfor循环实例与灵活变体for循环的三个表达式均可灵活省略或变形,但标准三段式写法最清晰易读,变体写法需权衡代码简洁性与可维护性。01标准写法for(i=1;i<=100;i++)printf("%d",i)三要素齐全,初始化、条件、更新一目了然,打印1到100,逻辑最清晰易读。1→10002省略表达式1inti=1;for(;i<=100;i++)将初始化移到循环外部,功能完全不变,但可读性略有下降,需注意变量作用域。外部初始化03省略表达式3for(i=1;i<=100;){...i++;}将更新操作移入循环体内部,适合更新逻辑较复杂、需要条件判断控制的场景。体内更新04逗号表达式for(i=1,j=100;i<j;i++,j--)同时控制两个变量向中间靠拢,适合双指针遍历、对称搜索等算法场景。双指针LOOPCONTROL三种循环如何选择三种循环各有适用场景:for适合次数已知的循环,while适合条件驱动的不确定循环,do-while适合至少执行一次的循环,三者可互相转换但应选择最自然的形式。三种循环语句对比对比维度whiledo-whilefor循环类型当型(先判断后执行)直到型(先执行后判断)当型(先判断后执行)最少执行次数0次1次0次循环次数不确定不确定已知或可计算三要素位置分散在循环内外分散在循环内外集中在for语句内典型场景条件读取、事件驱动菜单选择、输入验证计数循环、数组遍历CHAPTER03循环嵌套内外层循环的协作机制与经典应用案例NESTEDLOOPS循环嵌套:概念与执行机制循环嵌套通过外层循环控制"轮次"、内层循环控制"每轮内的重复"实现二维逻辑,总执行次数为外层次数乘以内层次数。结构定义在一个循环的循环体内包含另一个完整的循环结构,外层循环每执行一次,内层循环完整执行一遍,形成层级化的控制流。内外层结构执行次数总执行次数=外层次数×内层次数。如外层3次、内层4次,内层循环体实际执行12次,呈指数级增长。3×4=12次类比理解外层循环如"星期"(周一到周五5次),内层循环如"课时"(每天8节),总课时即为乘积,直观体现二维遍历。5×8=40节嵌套限制C语言对嵌套层数没有语法限制,但层数越多性能开销越大,代码可读性下降,实践中一般不超过3层嵌套。建议≤3层NESTEDLOOP嵌套循环经典实例:九九乘法表九九乘法表是循环嵌套的标志性案例,外层循环控制行号、内层循环控制列号,通过j<=i的条件实现三角形输出格式。01外层循环控制行号—for(i=1;i<=9;i++)驱动行号从1递增到9,每完成一行后执行printf("\n")换行,开始下一行的打印。02内层循环控制列号—for(j=1;j<=i;j++)以条件j<=i约束列数,使第i行恰好打印i个算式,自然形成下三角形状。03算式格式化输出—printf("%d*%d=%d",j,i,i*j)将j置于前、i置于后,保证"1×2"而非"2×1"的规范阅读顺序。04执行次数对比—三角输出总计1+2+3+…+9=45次;若内层改为j<=9则打印81次矩形表格,体现条件设计的关键差异。45次NESTEDLOOPS·BESTPRACTICES循环嵌套注意事项与性能嵌套循环虽然功能强大,但需警惕变量冲突、条件错误和性能爆炸三大陷阱,合理使用才能写出正确高效的代码。变量命名冲突内外层循环变量不能重名:如内外层都用i,内层修改i会破坏外层循环控制,导致逻辑混乱或死循环。VAR条件维度隔离循环条件各管各的维度:外层控制行范围、内层控制列范围,混淆条件会导致输出错误。SCOPE性能乘积爆炸两层各100次=1万次,三层各100次=100万次。实际开发中应尽量减少嵌套层数。O(n²)优化与替代能用单层循环解决的不要用双层;能用数学公式直接计算的不要用循环迭代;必要时用break提前退出。BREAKCHAPTER04循环流程控制break与continue语句的精确控制及goto语句的注意事项FLOWCONTROLbreak语句:提前跳出循环break语句可在循环体中无条件终止当前循环,常用于搜索命中后提前退出、异常条件紧急中断等场景,是循环流程控制的核心工具。作用在循环体内执行break时,立即终止当前循环,跳转到循环体之后的下一条语句继续执行TERMINATE示例for循环中i==5时break,输出1234,不再执行后续迭代,提前退出循环体1234典型场景在数组中查找目标值,找到后break退出,避免无意义的后续遍历,显著提升搜索效率SEARCH注意break只能跳出最内层循环,嵌套循环中内层break不会影响外层循环的执行INNERMOSTLoopControlcontinue语句:跳过当前迭代continue语句终止当前迭代的剩余代码并直接进入下一次迭代,循环本身不终止,适用于需要过滤特定条件的场景。核心作用在循环体内执行continue时,跳过当前迭代中continue之后的所有语句,直接进入下一次迭代的条件判断。跳过代码示例for循环遍历1–10,遇偶数执行continue跳过,最终输出13579,偶数被跳过但循环继续执行。13579与break区别break终止整个循环,不再有任何后续迭代;continue仅终止当前一轮,后续迭代正常进行。一轮vs全部典型场景数据处理中过滤不符合条件的记录,如遍历成绩数组时跳过缺考标记−1,只统计有效成绩。数据过滤CONTROLFLOWbreak与continue对比break终止整个循环,continue仅跳过当前迭代;两者在for和while中的跳转目标略有不同,理解差异是正确使用的前提。break语句01立即终止整个循环,执行后跳转到循环体之后的代码,后续所有迭代均不再执行。无论循环条件是否仍然满足,程序流程彻底退出当前循环结构。跑步类比:「直接退赛离开跑道」02for循环特殊行为:执行break后,表达式3(迭代操作)和表达式2(循环条件)均不再执行,直接跳出至循环体外。适用于找到目标后立即结束搜索的场景continue语句01仅跳过当前迭代,终止本轮循环体剩余代码;for循环中先执行表达式3再判断表达式2,while中直接回到条件判断。循环总次数保持不变。跑步类比:「这一圈跳过但下一圈继续」02for与while的差异:for循环会完成迭代变量的更新操作,而while循环直接进行条件判断。这是两者在continue行为上的关键区别。适用于跳过不符合条件的元素,继续处理剩余数据CONTROLFLOWgoto语句:用法与争议goto语句可实现无条件跳转,理论上能替代循环,但因破坏程序结构化、降低可读性而在实际开发中被严格限制使用。语法机制使用gotolabel;配合标签label:statement,程序执行到goto时无条件跳转至对应标签位置。无条件跳转循环替代设定loop标签,在循环体末尾通过if(condition)gotoloop;实现循环效果,但属于非结构化写法。非结构化核心争议goto破坏程序的结构化设计,使执行流程难以追踪,产生"面条代码",严重影响代码的可读性与可维护性。面条代码例外场景唯一被部分接受的使用场景:从深层嵌套(3层以上循环+多层if)中快速跳出到统一的错误处理或资源清理代码处。深层嵌套跳出CHAPTER05综合实战与总结通过实战案例巩固知识体系,梳理本章核心要点COMPREHENSIVECASE综合案例1:判断素数素数判断综合运用了for循环遍历、if条件判断和break提前退出三个知识点,是理解循环与选择结构协作的经典入门案例。01算法思路for(i=2;i<n;i++)n%i==0break用for(i=2;i<n;i++)遍历可能的因子,若n%i==0则n不是素数,执行break提前退出循环for+break02结果判定循环结束后判断i是否等于n:i==n说明循环正常结束(无因子),n为素数;否则为非素数i==n?03优化·平方根i<=sqrt(n)循环条件改为i<=sqrt(n),若n有大于√n的因子则必有小于√n的因子,减少约90%迭代次数−90%04优化·奇数跳过先排除n≤1和偶数(n>2时),再从3开始每次加2只检查奇数因子,进一步减半计算量÷2综合案例·编程实践综合案例2:Fibonacci数列Fibonacci数列通过循环实现递推计算,每次迭代利用前两项推导新项,展示了循环在数学序列生成中的核心价值。数列定义F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2),即1,1,2,3,5,8,13,21,34,55……1,1,2,3,5,8…循环实现设f1=1,f2=1,for循环从第3项开始,每次计算f=f1+f2,再更新f1=f2,f2=ff=f1+f2空间优化只需3个变量完成整个数列计算,空间复杂度O(1),远优于数组存储的O(n)方案O(1)扩展应用在自然界(向日葵种子排列、贝壳螺旋)和计算机科学(算法分析、堆结构)中广泛出现自然·算法COMPREHENSIVECASE综合案例3:水仙花数水仙花数问题通过循环遍历与数学运算结合,训练学生将数学定义转化为程序逻辑的能力,是循环结构考试高频题型。01数学定义三位数n满足"各位数字立方和等于n本身",例如153=1³+5³+3³=1+125+27=153。15302循环遍历for(num=100;num<=999;num++)遍历所有三位数,对每个数分离各位:百位=num/100、十位=num/10%10、个位=num%10。100–99903条件判断if(b³+s³+g³==num)成立则输出该数。全部水仙花数为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- G101平法钢筋配筋计算讲解
- LED照明设计的重要性
- 关于企业会计的实习个人总结
- 2026北师大二下易错题课件
- AutoCAD建筑图纸设计教程0财富值
- 会计考试案例分析题
- 音乐疗愈与健康
- 微观经济学案例分析题
- 综合知识公文题总结
- 子宫穿孔健康指导
- 工业自动化用工业机器人营销计划
- 公司检测室管理制度
- T-CSPSTC 127-2023 城镇排水管道封堵施工技术规程
- 《电子商务客户服务》电子教案-27模块六 项目1 了解售后客服的工作内容
- 曼娜回忆录全文小说
- 2021电力系统电压和无功电力技术导则
- 安全技术操作规程汇编-耐火材料厂(管道煤气)
- DB65T 8020-2024 房屋建筑与市政基础设施工程施工现场从业人员配备标准
- 鲁班奖工程质量创优策划
- 班前班后会记录卡
- 河南科技大学《护理学基础》2021-2022学年第一学期期末试卷
评论
0/150
提交评论