版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计·控制结构核心章节第五讲循环结构程序设计Contents课程目录系统掌握循环控制结构,从基础语法到嵌套逻辑与综合实战应用。01循环结构基础概念02while循环详解03do-while循环详解04for循环详解05循环嵌套与控制语句06综合应用实战CHAPTER01循环结构基础概念从问题引入到循环本质,建立循环思维Chapter04·Loop问题引入:为什么需要循环?当程序需要重复执行相同或相似操作时,逐行编写重复代码既低效又易错。循环结构通过条件控制实现代码的自动重复执行,是提升编程效率和代码简洁性的核心机制。Problem场景示例打印8行星号图案,若不使用循环需编写8行完全相同的printf语句,代码冗长且难以维护。8行重复代码Solution循环解决方案仅用2行for语句即可等价实现8行重复输出,代码量减少75%以上,可读性大幅提升。2行→75%↓CoreValue核心价值相同代码不必重复书写,利用循环结构达到自动重复执行的目的,提高编写效率并减少源代码存储空间。效率×简洁Extension延伸思考若要打印1000行、或根据用户输入决定行数,没有循环结构几乎无法实现,循环使程序具备处理大规模重复任务的能力。1000+行LoopEssentials循环结构的三要素所有循环结构都由三个核心要素构成:循环变量初值、循环控制条件表达式和循环体。掌握三要素是正确编写和理解任何循环语句的基础框架。循环变量初值定义循环的起点状态,如令i=1表示从第1次开始计数。初值的设定直接影响循环的执行次数和最终结果,需根据具体问题精确确定。i=1循环控制条件一个布尔表达式,决定循环是否继续执行,如i≤100表示当i不超过100时继续。条件为真时执行循环体,条件为假时退出循环,这是循环的"开关"。i<=100循环体每次循环要反复执行的语句块,是循环的核心功能所在。循环体内必须包含使循环趋向结束的语句(如i++),否则将导致死循环。i++EXECUTIONFLOW循环的执行流程循环的执行遵循"初始化→判断条件→执行循环体→更新变量→再判断"的迭代模式。理解执行流程是避免死循环、正确设计循环逻辑的前提。标准执行流程初始化循环变量→判断条件表达式→条件为真则执行循环体→更新循环变量→回到条件判断,直至条件为假退出INIT→CHECK→EXEC当型循环while/for先判断条件再执行循环体,若初始条件即为假,循环体一次也不执行WHILE/FOR直到型循环do-while先执行循环体再判断条件,无论条件是否满足,循环体至少执行一次DO-WHILE关键警示循环体内必须有使循环趋向结束的语句,如变量递增或递减操作,否则条件永远为真导致死循环INFINITELOOPCHAPTER02while循环详解当型循环的基础语法、执行机制与典型应用CProgramming·LoopControlwhile语句语法与执行流程while循环是典型的"当型循环",先判断条件后执行循环体。其语法简洁、逻辑清晰,是学习其他循环语句的基础,适用于循环次数不确定的场景。语法格式01一般形式:while(表达式){循环体;}02表达式为真(非0)时执行循环体,为假(0)时退出循环03循环体包含多条语句时必须用花括号括起,形成复合语句执行流程01第一步—计算条件表达式的值第二步—若为真则执行循环体,然后回到第一步;若为假则跳过循环体,执行后续代码Evaluate→Execute→Repeat02特点:先判断后执行,若初始条件即为假,循环体一次也不执行0次最少执行次数WhileLoop·CaseStudy经典案例:while实现1到100累加求和累加求和是while循环最经典的应用场景,通过循环变量递增与累加器配合,将重复加法操作转化为循环迭代,清晰展示了三要素的协同工作机制。三要素循环变量i初值为1,控制条件为i≤100;循环体执行s=s+i与i++两个操作,三者缺一不可。i=1→i≤100→s+=i,i++代码实现inti=1,s=0;while(i<=100){s+=i;i++;}printf("s=%d",s);执行跟踪i=1→s=0+1=1i=2→s=1+2=3i=3→s=3+3=6⋯i=100→s=4950+100=5050关键细节累加器s必须在循环前初始化为0;循环变量i必须在循环体内递增。二者缺一不可,否则结果错误或陷入死循环。WHILELOOPwhile循环进阶:动态求和与阶乘计算while循环不仅适用于固定次数的计算,更能处理由用户输入决定循环次数的动态场景,配合累加器和累乘器可实现多种数学计算。动态求和(1到n)用户运行时输入n值,循环条件改为i<=n,实现灵活的动态计算CODEscanf("%d",&n);i=1;s=0;while(i<=n){s+=i;i++;}体现了while循环处理不确定次数任务的优势,循环次数由运行时数据决定ACCUMULATORΣ阶乘计算(n!)将累加改为累乘:循环体中p=p*i,累乘器p的初值必须为1(而非0)CODEinti=1;longp=1;while(i<=n){p*=i;i++;}注意使用long类型存储阶乘结果,因为阶乘增长极快,int类型很快会溢出PRODUCTn!COMMONMISTAKESwhile循环注意事项与常见错误while循环看似简单,但分号陷阱、花括号遗漏、死循环和初始条件设计不当是初学者最常犯的四大错误,需通过规范编码习惯加以规避。分号陷阱while(i<=100);多写分号导致循环体变为空语句,i永远不变化,形成死循环或循环无实际效果。;复合语句遗漏循环体含多条语句时忘写花括号,仅第一条语句被循环执行,后续语句只运行一次,逻辑完全错误。{}死循环根源循环体内未包含使循环变量趋向终止的操作(如忘记i++),条件表达式永远为真,程序无法退出。i++初始条件设计while是先判断后执行的当型循环,若循环变量初值已使条件为假,循环体一次也不执行,需确保初值合理。while()CHAPTER03do-while循环详解直到型循环的语法特点、与while的对比及典型应用语法与流程do-while语句语法与执行流程do-while循环是"直到型循环",先执行循环体再判断条件,保证循环体至少执行一次。语法格式SYNTAX01一般形式:do{循环体;}while(表达式);02注意末尾分号不可遗漏,这是do-while语法的必要组成部分03循环体为多条语句时同样需要花括号括起执行流程EXECUTIONFLOW01执行循环体语句→计算while后表达式的值→若为真则回到第一步,若为假则退出循环02核心特点:先执行后判断,循环体至少被执行一次,即使首次判断条件即为假03适用场景:需要先执行一次操作再判断是否继续的场景,如用户输入验证、菜单选择等交互流程LOOPMECHANICSwhile与do-while核心区别对比while与do-while的根本区别在于条件判断的时机:while先判断后执行,do-while先执行后判断。这一差异决定了初始条件不满足时两者的执行行为完全不同。01判断时机差异while在执行循环体之前判断条件(当型),do-while在执行循环体之后判断条件(直到型)当型vs直到型02最少执行次数while循环体可能一次也不执行(初始条件为假时),do-while循环体至少执行一次≥1次03边界场景验证若初始i=10、条件为i<5,while循环体不执行,do-while执行1次后退出,结果截然不同i=10,i<504选择依据若循环体必须先执行一次才有意义(如获取输入、显示菜单),应选do-while;否则优先选while场景驱动APPLICATIONdo-while典型应用:用户输入验证do-while的"先执行后判断"特性天然适合输入验证、菜单交互等"至少执行一次"的场景,代码逻辑比while更简洁自然。输入范围验证01场景:要求用户输入1到10之间的整数,输入不合法则反复提示代码:do{printf("请输入1-10:");scanf("%d",&num);}while(num<1||num>10);02优势:无需在循环前重复写一次输入语句,代码结构更简洁,逻辑更自然先执行后判断菜单循环交互01场景:显示功能菜单,用户选择操作,选择退出时才结束程序代码:do{显示菜单;读取选择;执行操作;}while(选择!=退出);02优势:确保菜单至少显示一次,用户体验完整,退出条件明确可控至少执行一次CHAPTER04for循环详解最灵活的循环语句,三要素一体化的高效语法CLanguage·Loopfor语句语法结构与执行流程for循环将循环三要素(初始化、条件判断、变量更新)整合在一行语法中,结构紧凑、逻辑清晰,是C语言中使用最广泛的循环语句,尤其适合已知循环次数的场景。SECTION01语法格式for(expr1;expr2;expr3){body}一般形式:三表达式以分号分隔,循环体置于花括号内表达式1·初始化循环变量初始化,如inti=1,仅在循环开始前执行一次表达式2·条件判断循环控制条件,如i<=100,每次循环前判断真假表达式3·变量更新循环变量更新,如i++,每次循环体执行后执行SECTION02执行流程01执行表达式1完成初始化,随后判断表达式2——条件为真则进入循环体,为假则直接退出循环02执行表达式3更新循环变量,然后回到表达式2重新判断,如此往复直至条件为假退出03等价转换:for与while可互相替代,但for写法更紧凑for(i=1;i<=100;i++)≡i=1;while(i<=100){…;i++;}CLASSICCASESfor循环经典案例集for循环凭借其紧凑的三要素语法,在累加求和、序列遍历、条件筛选和计数统计等场景中表现出色,代码可读性和可维护性均优于等价的while写法。01累加求和for(inti=1,s=0;i<=100;i++)s+=i;一行完成初始化、条件、更新,累加器s初始化为0s+=i→505002偶数筛选for(inti=1;i<=10;i++)if(i%2==0)printf("%d",i);结合条件判断输出2,4,6,8,10i%2==003字符计数for(inti=0,count=0;str[i]!='\0';i++)if(str[i]==target)count++;遍历字符串统计目标字符出现次数count++04反向遍历for(inti=10;i>=1;i--)printf("%d",i);表达式3改为i--实现倒序输出10到110→1ADVANCEDUSAGEfor循环灵活变体与高级用法for语句的三个表达式均可灵活省略或扩展,配合逗号表达式可实现多变量控制,但需注意省略条件表达式时的死循环风险和代码可读性平衡。表达式省略规则01省略表达式1:for(;i<=100;i++)循环变量在for之前已初始化,常用于变量需在循环外使用的场景循环外初始化02省略表达式3:for(inti=1;i<=100;)变量更新移入循环体内,适用于更新逻辑较复杂的情况体内更新03三个全省略:for(;;)构成无限循环,等价于while(1),需在循环体内用break退出无限循环逗号表达式扩展01表达式1使用逗号:for(i=1,j=100;i<j;i++,j--)同时初始化多个控制变量多变量控制02表达式3使用逗号:for(inti=0;i<n;i++,sum+=a[i])在更新变量的同时执行其他操作并行操作03注意:表达式2(条件)不可省略,否则语法错误;省略后需确保循环体内有明确的退出机制退出机制COMPARISON三种循环语句综合对比while、do-while、for三种循环在功能上完全等价但各有适用场景:while适合次数不定的条件循环,do-while适合至少执行一次的交互场景,for适合次数已知的计数循环。核心差异对比01判断时机while和for先判断后执行(当型),do-while先执行后判断(直到型)02最少执行次数while和for可能一次也不执行,do-while至少执行一次03语法特点for将三要素集中一行最紧凑,while语法最简洁,do-while有独特的do...while结构选型决策指南01循环次数已知且固定优先选for,如遍历数组、打印n行图案02循环次数不确定由运行时条件决定,选while,如读取文件直到末尾03必须先执行一次再判断选do-while,如用户输入验证、菜单循环Chapter05循环嵌套与控制语句多层循环的协作机制与break/continue的精细控制NESTEDLOOPS循环嵌套概念与基本应用循环嵌套通过在外层循环体内嵌入内层循环实现多维迭代,总执行次数等于各层循环次数的乘积。5×5矩阵执行示意12345678910111213141516171819202122232425外层i=0外层i=3外层i=425次总执行嵌套机制01外层循环每执行一次,内层循环完整执行一轮02总执行次数=外层次数×内层次数N×M03示例:外层5次×内层5次=25次04对应5×5矩阵的25个元素逐一访问5×5矩阵打印案例CODEfor(i=0;i<5;i++){for(j=0;j<5;j++)printf("*");printf("\n");}LOGIC外层控制行数,内层控制每行列数,内层结束后换行,清晰对应二维结构NestedLoopPatterns嵌套循环进阶:三角形与乘法表当内层循环的终止条件与外层循环变量关联时,可以实现行数递增的三角形图案和九九乘法表等经典输出,核心技巧是让内层循环次数随外层动态变化。01直角三角形外层i从1到5控制行数,内层j从1到i控制每行星号数,第i行打印i个星号,形成递增三角形j≤i02代码实现for(i=1;i<=5;i++)嵌套for(j=1;j<=i;j++)打印星号,内层条件j<=i是关键j<=i03九九乘法表外层i从1到9,内层j从1到i,打印"j×i=i×j"表达式,内层结束后换行9×904核心技巧内层循环的终止条件不再是固定值,而是引用外层变量i,实现两层循环的动态联动动态联动ControlFlowbreak语句:提前终止循环break语句用于立即终止当前所在的循环,跳出循环体执行后续代码。在搜索、验证等找到结果即可停止的场景中,使用break可以显著减少不必要的计算,提升程序效率。基本用法01在循环体内写入break;执行到break时立即退出当前循环,跳转到循环后的下一条语句。02break只能跳出它所在的最内层循环,多层嵌套时外层循环不受影响。典型案例:素数判断01用循环从2遍历到n−1,若发现n%i==0则break退出,循环后判断i是否等于n来确认结果。02一旦找到因子立即停止,无需遍历完所有可能,平均减少约50%的无效计算。≈50%计算节省FlowControlcontinue语句与break对比continue语句跳过本次循环的剩余语句直接进入下一轮迭代,而非退出整个循环。与break的'终止循环'不同,continue是'跳过当次',二者在流程控制中的作用层次完全不同。01continue作用执行到continue时,跳过本次循环体中后续语句,直接进入下一轮循环的条件判断或变量更新02与break本质区别break终止整个循环(辞职走人),continue仅跳过当前这一次(跳过本单做下一单)03典型场景遍历数据时过滤不符合条件的元素,如for(i=1;i<=20;i++){if(i%3==0)continue;printf("%d",i);}04嵌套循环中continue同样只作用于最内层循环,跳过内层本次迭代,外层循环正常继续CHAPTER06综合应用实战通过经典编程案例融会贯通循环结构的核心知识CaseStudy01实战案例一:素数判断与素数表输出素数判断综合运用循环嵌套与break控制:外层遍历待检测数字,内层逐一检验因子并用break提前退出。该案例是循环结构知识融合的典型范例,体现了多语句协同解题的编程思维。01单个素数判断算法:用for循环从2遍历到n−1(优化为√n),若n%i==0则break退出,循环后判断退出原因代码:for(i=2;i<n;i++)if(n%i==0)break;后接if(i==n)printf("是素数");break提前退出机制02100以内素数表外层循环遍历2到100每个数,内层用素数判断逻辑检验,是素数则输出优化:内层只需检查到√n,大幅减少计算量;可引入flag变量使逻辑更清晰√n复杂度优化边界Algorithm·ExhaustiveSearch实战案例二:水仙花数穷举法水仙花数问题通过穷举法在100-999范围内逐一检验,利用取模和整除运算分解各位数字,计算立方和与原数比较。该案例展示了循环结构在暴力搜索类问题中的直接应用。01问题定义找出所有三位数n,使得百位³+十位³+个位³=n,如153=1³+5³+3³153=1³+5³+3³02数字分解技巧个位=n%10,十位=n/10%10,百位=n/100,利用取模和整除运算提取各数位n%10·n/10%10·n/10003循环实现for(n=100;n<=999;n++){分解各位;计算立方和;if(和==n)printf("%d",n);}100→99904穷举法思想在有限解空间内遍历所有可能并逐一验证,虽然时间复杂度较高但逻辑简单、不易出错有限解空间遍历实战案例三斐波那契数列(递推思想)斐波那契数列通过递推关系f(n)=f(n-1)+f(n-2)实现,用两个变量滚动记录前两项,循环迭代生成后续项。该案例展示了递推思想在循环编程中的核心地位,是动态规划的启蒙案例。01递推关系分析数列规律:1,1,2,3,5,8,13,21…从第三项起,每项等于前两项之和,体现自然界黄金分割比例递推公式:f(n)=f(n-1)+f(n-2),初始值f(1)=1,f(2)=1,仅需两个变量即可迭代计算1,1,2,3,5,8…02循环实现代码实现:inta=1,b=1,c;printf("11");for(i=3;i<=20;i++){c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广州市白云区财政局招考直属事业单位工作人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省韶关市新丰县招聘政府雇员10人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省深圳市人民政府行政复议办公室招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省政府采购中心事业单位招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省广州市海珠区国土规划信息中心招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省佛山市医疗保障局南海分局招聘政府辅助人员1人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年广东省东莞市人民政府驻广州办事处招聘6人易考易错模拟试题(共500题)试卷后附参考答案
- 《传染病防治法》考试参考题库附答案(各题型)
- 单位门户网站、新媒体平台运营审核管理制度完整版
- 实验SQLServer系统概述数据库管理与使用
- 中药饮片临方炮制规范
- 妊娠合并心脏病护理查房
- 招标代理保密制度
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 项目HSE(安全环保职业健康)管理方案及具体措施
- PCCP管道监造监理实施细则(按照新规范编制)
- 计算机导论(高等院校)全套教学课件
- 海绵城市工程方案
- 化工设备安装培训课件
- 50205-2020-钢结构工程施工质量验收标准
- 磷矿石的烧结
评论
0/150
提交评论