课课通C语言(计算机类)(第2版)课件 第4章 循环结构程序设计_第1页
课课通C语言(计算机类)(第2版)课件 第4章 循环结构程序设计_第2页
课课通C语言(计算机类)(第2版)课件 第4章 循环结构程序设计_第3页
课课通C语言(计算机类)(第2版)课件 第4章 循环结构程序设计_第4页
课课通C语言(计算机类)(第2版)课件 第4章 循环结构程序设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课课通C语言(第2版)TALK第4章循环结构程序设计考纲要求★理解while和do/while循环结构。★掌握for循环结构。★掌握continue语句和break语句。★理解循环的嵌套。★掌握程序设计中几种常用算法的基本思想(如穷举法、递推法和文本作图等)。★运用循环结构进行程序设计。考纲要求LEARNINGOBJECTIVES循环结构理解深入理解while和do/while两种循环结构的执行逻辑,辨析其语法差异与适用场景。核心循环掌握熟练掌握for循环的标准语法结构,能够灵活运用其进行数组遍历与计数控制操作。流程控制语句掌握continue跳过本次循环与break终止循环的核心用法,理解其在循环中的跳转逻辑。循环嵌套机制理解多层循环嵌套的执行顺序与逻辑关系,能够分析并编写简单的双重循环结构代码。经典算法思想掌握穷举法、递推法等常用算法逻辑,建立初步的算法设计思维,解决基础数学与逻辑问题。综合程序设计综合运用各类循环结构与算法思想,能够根据实际需求,独立完成完整的程序设计与代码编写。本章目录CONTENTS014.1while和do/while理解并掌握while和do/while两种循环结构,重点体会“先判断后执行”与“先执行后判断”的逻辑区别。024.2for循环语句掌握功能最强大的for循环及其核心应用场景,熟悉循环变量“初始化、条件判断、更新”的标准范式。034.3break和continue学习使用跳转语句精细控制循环流程,深入理解break“强制终止循环”与continue“跳过本次迭代”的区别。044.4循环嵌套掌握多重循环的逻辑设计与执行过程,学会分析内层循环与外层循环的执行时序关系,构建复杂的循环逻辑。054.5循环结构应用结合穷举、递推等经典算法思想,通过实际编程案例练习,掌握循环结构在解决数学计算与逻辑问题中的技巧。算法思维进阶通过本章系统学习,建立结构化的程序设计思维,为后续复杂算法打下坚实基础。4.1while和do/whileBASICLOOPSTRUCTURES4.1.1循环结构概述循环结构的特点:在给定条件成立时,反复执行某一操作,直到条件不成立为止。这是程序设计中处理重复问题的核心机制。while循环先判断条件,后执行循环体。适合未知次数的场景。do/while循环先执行循环体,后判断条件。确保循环至少执行一次。for循环将初始化、条件、更新写在一起。结构紧凑,逻辑清晰。场景A:条件明确,次数未知优先选择while或do/while,逻辑更符合“满足条件则继续”的直觉。场景B:循环次数已知三种循环均可实现,但for循环将控制变量集中管理,代码更加简洁易读。4.1.2while循环语句📝语法格式定义while(表达式){循环体语句;//重复执行的代码块⚙️核心执行三部曲判断:计算表达式值,非0为真(Ture),0为假(False)执行:条件为真时,执行循环体,执行后自动回到“判断”退出:条件为假时,立即跳出循环,执行后续代码先判断,后执行循环体可能一次都不执行警惕死循环必须有修改条件的语句📊执行流程可视化程序开始表达式为真?真(T)执行循环体假(F)循环结束4.1.3do/while循环语句📝一般格式(Syntax)do{循环体语句;//可包含多条语句}while(循环条件表达式);//注意末尾的分号;⚡️核心特点(Features)“先执行循环体,后进行条件判断”💬结论:无论条件是否成立,循环体至少会执行一次🚶执行四步走(ExecutionSteps)1.执行:先运行一次循环体代码2.判断:计算表达式的布尔值3.循环:值为真(非0)返回执行4.退出:值为假(0)跳出循环🔄流程可视化(Flowchart)Start执行体条件真?✅是→回滚❌否→结束重点提示:while(表达式)末尾的分号(;)是do-while语句的必要组成部分,在书写代码时切勿遗漏!例题解析【例4-1-1】:求最大公约数💡核心解题思路01.数值交换预处理若输入n1<n2,先交换两者数值,确保n1始终大于等于n2,为后续计算打好基础。02.辗转相除法核心循环循环执行t=a%b;a=b;b=t;直到b=0。此时的a即为两个数的最大公约数。03.最小公倍数公式推导利用公式:最小公倍数=(原始n1×原始n2)÷最大公约数,快速计算出最终结果。📝程序填空参考答案①循环条件判断:应填入代码:n1=n2②变量赋值操作:应填入代码:n2③取余运算逻辑:应填入代码:a%b④最终结果:n1*n2/a巩固练习4.1-程序阅读题02/程序运行结果推演#include<stdio.h>

main(){inti=1,s=0;

while(i<=10){s+=i;i++;}

printf("i=%d,s=%d\n",i,s);

}输出结果:i=______,s=______💡提示:手动模拟循环变量i的递增过程,重点关注循环终止时的条件值。03/循环结构差异对比程序A·while(先判断,后执行)inti=4,a=1;while(i<=3){a*=2;i++;}程序B·do/while(先执行,后判断)inti=4,a=1;do{a*=2;i++;}while(i<=3);核心差异:当条件不满足时,______循环至少执行一次。巩固练习4.1-编程题04求1+2+3+…+n的和。

考察点:基础累加循环结构的应用05求s=1×2×3×…×10的值。

考察点:基础累乘循环与变量初始化06求[5,55]内能被2整除的数,每行输出5个,并统计总和。

考察点:条件筛选、格式化输出与计数07求100到200能同时被3和5整除的数,并统计个数。

考察点:逻辑与运算符(&&)的应用08求s=1/2+1/3+…+1/10的和。

考察点:浮点型数据运算与循环精度控制09求s=1-1/3+1/5-1/7+1/9-1/10的值。

考察点:循环中交替变更符号的技巧10输入一行字符,分别统计其中字母、数字和其他字符的个数。

考察点:字符的ASCII码判断与多条件分支4.2for循环语句CLANGUAGECORESYNTAX4.2.1for循环语句的格式与执行语法格式解析for(表达式1;表达式2;表达式3)循环体语句;[初始化]表达式1仅在循环开始时执行一次,设置循环变量初值。[判断条件]表达式2每次循环前判断真假,决定是否继续循环。[更新变量]表达式3每次循环体执行完毕后执行,改变循环变量。标准执行流程STEP01:执行表达式1(初始化)STEP02:判断表达式2。

真→继续;假→退出循环。STEP03:执行循环体语句块STEP04:执行表达式3,返回STEP02核心逻辑特点先判断·后执行执行逻辑与while循环完全一致,属于“当型”循环结构。⚠️循环体可能一次都不执行4.2.2for循环的灵活性省略表达式1:前置初始化将变量的初始化操作移至循环结构外部进行,循环头部仅保留判断与更新。inti=0;

for(;i<5;i++){...}省略表达式2:构造死循环循环条件永远为真,需在循环体内部通过break语句主动控制循环的退出。for(inti=0;;i++){

if(i>5)break;...}省略表达式3:体内更新将循环变量的更新操作(如自增)写入循环体内部,适用于复杂的迭代逻辑。for(inti=0;i<5;){

...i++;}使用逗号表达式:并行操作在一个表达式中使用逗号分隔,实现多个变量的同时初始化或同步更新操作。for(inti=0,j=10;i<j;

i++,j--){...}例题解析【例4-2-2】:递推法求数列和📝题目描述编程计算数列和:S=1+1/2+1/3+1/5+1/8+1/13+1/21。观察分母规律,尝试使用递推法高效求解。💡解题思路:递推法核心观察规律:从第3项开始,每个分母=前两个分母之和(斐波那契规律)。变量定义:用fm1、fm2分别保存前两项分母,t保存新分母。循环递推:利用for循环迭代5次。每次计算新分母t,累加1.0/t,并更新fm1和fm2。💻C语言核心实现floats=1.5;//初始值(1+1/2)intfm1=1,fm2=2,t;//定义分母变量for(inti=1;i<=5;i++){//循环计算后5项t=fm1+fm2;s+=1.0/t;//计算新项并累加fm1=fm2;fm2=t;//更新前两项}💡核心思想:递推法=找到规律+迭代计算,利用已知的“前项”推导出未知的“后项”巩固练习4.2-编程题03范围统计与求和找出[10,99]范围内十位数是偶数的所有整数,统计符合条件的数的个数并计算它们的总和。04阶乘累加计算计算公式s=1+(1×2)+(2×3)+(3×4)+…+(20×21)的最终结果,体会递推的规律。05寻找阿姆斯特朗数输出1~2000中的所有阿姆斯特朗数(即n位数的各位n次方之和等于该数本身)。06累加和的嵌套计算求s=1+(1+2)+(1+2+3)+…+(1+2+…+n)的值。这是一个典型的双重循环应用场景。07交替级数求和计算s=1-1/2+1/4-1/6+…-1/20的值。注意观察符号的交替变化规律与分母的步长。08斐波那契数列变形求数列1/2,2/3,3/5,5/8…的前10项及总和。分子分母分别遵循斐波那契数列的规律。4.3break和continueLOOPCONTROLSTATEMENTS在循环执行过程中,用于改变流程走向的两个核心关键字,

让程序逻辑控制更加灵活与精细。4.3.1break语句核心功能定义强制跳出并终止当前所在的循环结构(for/while/do-while)或switch分支结构,程序执行流将立即跳转到该结构之后的第一条语句。💻循环中使用示例(C语言)for(inti=1;i<=10;i++){

if(i==5){break;}//触发后立即退出循环

printf("%d",i);

}📌实际输出结果:1234

循环在i=5时被break强制终止,后续迭代不再执行。📎核心规则:作用范围break语句具有“就近原则”,它的作用范围被严格限制:

仅能跳出离它最近的那一层循环或switch结构。嵌套循环注意:

break不会跨层影响外层循环的执行状态。4.3.2continue语句核心功能:当程序执行到continue时,会跳过本次循环中continue之后的所有剩余语句,直接跳转至循环条件判断,开始下一次循环。▍代码演示(C语言)for(inti=1;i<=5;i++){if(i==3){continue;//触发时跳过下方printf}printf("%d",i);}执行结果:1245(数字3被跳过)break语句直接终止整个循环,程序流程完全跳出循环体,后续循环不再执行。continue语句仅终止本次循环,跳过本轮剩余代码,立即进入下一次循环的条件判断。💡记忆口诀:break=彻底“中断”,continue=本次“重来”。例题解析【例4-3-1】▍题目:核心代码逻辑inti=15;do{switch(i%2){case1:i--;break;case0:i--;continue;}i-=2;printf("i=%3d\n",i);}while(i>0);💡关键点:break仅跳出当前switch,而continue会直接跳过本次do-while循环剩余语句。▍推演:变量变化过程1.i=15(奇)→case1→i=14→break→i=12→打印122.i=12(偶)→case0→i=11→continue→跳过打印3.i=11(奇)→case1→i=10→break→i=8→打印84.i=8(偶)→case0→i=7→continue→跳过打印5.以此类推...直到i递减至0。规律:每次有效打印,i减少4▍结果:程序运行输出i=12i=8i=4i=0当变量i最终递减至0时,循环条件i>0不再成立,程序循环终止。4.4循环嵌套LOOPNESTING当一个循环的循环体内部包含另一个完整的循环时,即构成“循环嵌套”。它是解决矩阵运算、图形打印等复杂逻辑问题的核心编程结构。4.4.1循环嵌套的执行过程核心规则:外层循环每执行一次,内层循环必须完整地执行一轮(所有次数)。for(inti=1;i<=2;i++){//外循环(执行2次)for(intj=1;j<=3;j++){//内循环(每次跟随外循环执行3次)printf("i=%d,j=%d\\n",i,j);//输出组合结果}PHASE01·外层循环i=1•内循环启动(j从1开始):①j=1→输出:i=1,j=1②j=2→输出:i=1,j=2③j=3→输出:i=1,j=3(本轮结束)PHASE02·外层循环i=2•内循环重启(j重置为1):①j=1→输出:i=2,j=1②j=2→输出:i=2,j=2③j=3→输出:i=2,j=3(程序结束)例题解析【例4-4-2】:文本作图📝题目要求编写程序,在控制台中打印出右侧所示的金字塔图形。*********💡解题核心:双层循环嵌套外循环(i)

控制行数,共执行4次内循环(j)

控制空格:4-i个内循环(k)

控制星号:2i-1个换行操作

每行结束后打印\n🔑核心代码实现(C语言)for(inti=1;i<=4;i++){for(intj=1;j<=4-i;j++)printf("");//打印空格for(intk=1;k<=2*i-1;k++)printf("*");//打印星号printf("\n");//换行}💡关键点:找到空格数与星号数随行数变化的数学规律。4.5LOOPSTRUCTUREAPPLICATION循环结构程序设计应用4.5.1常用算法:穷举法核心思想对问题的所有**可能情况**进行逐一检查与验证,筛选并找出完全符合条件的最优解或全部解。适用场景•问题的解空间范围**有限且明确**,易于枚举。•

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论