第5章1-循环结构程序设计课件

上传人:仙*** 文档编号:241969889 上传时间:2024-08-08 格式:PPT 页数:41 大小:655.50KB
返回 下载 相关 举报
第5章1-循环结构程序设计课件_第1页
第1页 / 共41页
第5章1-循环结构程序设计课件_第2页
第2页 / 共41页
第5章1-循环结构程序设计课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,*,省级精品课程程序设计基础,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,省级精品课程程序设计基础,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,回顾复习:,1,、,if,的单分支,:,if(,表达式,),语句;,2,、,if,的双分支,:,if(,表达式,),语句,1,;,else,语句,2,;,3,、,if,的多分支,:,if(,表达式,1),语句,1,;,else if(,表达式,2),语句,2,;,else if(,表达式,3),语句,3,;,else,语句,4,;,4,、,switch,语句:,switch(,表达式,),case,常量:语句,case,常量:语句,.,default:,语句,2024/8/8,1,省级精品课程程序设计基础,思考:,问题:,编程求解,1+2+3+4+5,的和?,算法,1,:(,1,)定义一个存放结果的变量,s,;,算法,2,:,(,1,)定义一个存放结果的变量,s=0,;,(,2,),s=s+1;,(,3,),s=s+2;,(,4,),s=s+3;,(,5,),s=s+4;,(,6,),s=s+5;,算法,3,:(,1,)定义一个存放结果的变量,s=0,;再定义一个变量,i,;,(,2,),i=1;,s=s+i;,(,3,),i=2;,s=s+i;,(,4,),i=3;,s=s+i;,(,5,),i=4;,s=s+i;,(,6,),i=5;,s=s+i;,(,2,),s,=1+2+3+4+5,;,2024/8/8,2,省级精品课程程序设计基础,5.1,while,语句,5.2,do-while,语句,5.3,for,语句,本次课内容:,第,5,章 循环结构程序设计,2024/8/8,3,省级精品课程程序设计基础,while,语句,语法形式,while(,表达式,),循环体语句,;,执行过程:通过判断循环控制条件是否满足来决定是否继续循环。,表达式为循环控制条件。,表达式值为非,0,时(满足循环条件),执行循环体语句,之后再次判断表达式。,表达式值为,0,时,退出循环。,表达式,语句,非,0,0,2024/8/8,4,省级精品课程程序设计基础,while,语句,#include,main(),int i=,1,s=0;,while(i=10),s=s+i;,i+;,printf(sum=%dn,s);,问题,1,:程序段中循环体语句执行了,_,次。,问题,2,:语句,i+,的作用是:,_,。,问题,3,:循环体语句是否是复合语句?如果是,请说明此处使用复合语句的原因?,循环体由多条语句构成,必须用,构成复合语句。,0,进入循环时,表达式值为,0,,则一次循环也不会执行。,使循环趋于结束,循环体内必须有使循环趋于结束的语句,否则循环变为,死循环,。,2024/8/8,5,省级精品课程程序设计基础,while,语句举例,例,5.1,写一个程序,输入一个班每个学生的成绩,计算全班的平均成绩。,解题步骤,输入第一个学生的成绩。,分数合法(,0=score,),完成下列操作。,累计总分;,人数加,1,;,输入下一个学生的分数。,重复,第,2,步,直到分数,=0,),sum=sum+score;,n+;,scanf(%f,if(,n!=0,),aver=sum/n;,printf(average=%10.1fn,aver);,else printf(No average!n);,问题:此语句可否省略?,2024/8/8,7,省级精品课程程序设计基础,do-while,语句,语法形式,do,循环体语句,;,while(,表达式,),;,执行过程:先执行循环体中的语句,再通过判断表达式的值决定是否继续执行循环。,先执行一次循环体语句。,判断表达式的值。,表达式值为非,0,,执行循环体语句,之后再次判断表达式。,表达式值为,0,,结束循环。,语句,表达式,0,非,0,2024/8/8,8,省级精品课程程序设计基础,#include,main(),int i=11,s=0;,while,(i=10),s=s+i;,i+;,printf(s=%dn,s);,printf(i=%dn,i);,#include,main(),int i=11,s=0;,do,s=s+i;,i+;,while,(i=10);,printf(s=%dn,s);,printf(i=%dn,i);,s=0,i=11,s=11,i=12,while,语句循环体最少执行,0,次。,do-while,语句循环体最少执行,1,次。,2024/8/8,9,省级精品课程程序设计基础,for,语句,语法形式,for,(,表达式,1,;,表达式,2,;,表达式,3),循环体语句;,表达式,1,:初值表达式,用于在循环开始前为循环变量设置初始值。,表达式,2,:循环控制表达式,它控制循环执行的条件。,表达式,3,:循环控制变量修改表达式,用于每次执行循环后修改循环变量。,2024/8/8,10,省级精品课程程序设计基础,执行过程,求解表达式,1,的值,得到循环变量的初值。,判断表达式,2,的值。,表达式,2,为真,执行循环体语句。,表达式,2,为假,结束循环。,求解表达式,3,的值,修改循环变量,得到循环变量的新值。,转向步骤,2,继续。,for,语句,表达式,1,表达式,2,循环体语句,表达式,3,非,0,0,执行次数:,(,终值,-,初值,)/,步长,+1,2024/8/8,11,省级精品课程程序设计基础,for,语句举例,例,5.2,写程序计算,1+2+3+,+100,。,#include,main(),int s=0,i;,for(,i=1,;,i=100,;i+),s=s+i;,printf(s=%dn,s);,表达式,1,:,i=1,表达式,2,:,i=100,表达式,3,:,i+,循环体语句:,s=s+i;,2024/8/8,12,省级精品课程程序设计基础,for,语句与,while,语句的比较,#include,main(),int s=0,i;,for(,i=1,;,i=100,;i+),s=s+i;,printf(s=%dn,s);,#include,main(),int s=0,i=1,;,while(,i=100,),s=s+i;,i+;,printf(s=%dn,s);,2024/8/8,13,省级精品课程程序设计基础,for,语句的变形,表达式的省略,省略表达式,1,for(,i,=1,;,i=10,;,i+,)sum=,sum+i,;,i=1;,/*for,语句之前给循环变量赋初值*,/,for(,;,i,=10,;,i+,)/*,表达式,1,可以省略,但是分号不可省*,/,sum=,sum+i,;,省略表达式,3,for(,i,=1,;,i=10,;,i+,)sum=,sum+i,;,for(,i,=1,;,i=10,;,),sum=,sum+i,;,i+;,/*,省略表达式,3,,循环体内必须有相应语句*,/,2024/8/8,14,省级精品课程程序设计基础,for,语句的变形,表达式的省略,省略表达式,1,和表达式,3,for(,i,=1,;,i=10,;,i+,)sum=,sum+i,;,i=1;,for(,;,i,=10,;,),sum=,sum+i,;,i+;,/*,省略表达式,1,和,3,,,for,语句相当于,while,语句*,/,2024/8/8,15,省级精品课程程序设计基础,for,语句的变形,for,语句中的逗号表达式,#include,main(),int,i,j,;,for(,i,=1,j=10,;i=,j;,i+,j,-,),printf(i,=%,d,j,=%,dn,i,j,);,两个循环变量参与循环控制时,表达式,1,和表达式,3,可以是逗号表达式。,i=1,j=10,i=2,j=9,i=3,j=8,i=4,j=7,i=5,j=6,2024/8/8,16,省级精品课程程序设计基础,for,语句的变形,循环体为空语句,for(i,=1;i100),break;,printf(,“,%s=d,”,s);,2024/8/8,22,省级精品课程程序设计基础,continue,语句,语法形式,continue,;,功能:继续语句,结束本次循环,立即进入下一次循环。,问题:循环体内,continue,后面,的语句是否执行?,for(i,=1;i=10;i+),if(i%3=0),continue;,printf(%dn,i,);,2024/8/8,23,省级精品课程程序设计基础,break,语句与,continue,语句的比较,#include,main(),int i;for(i=10;i16;i+),if(i%3=0),break;,else,printf(%5d,i);,#include,main(),int i;for(i=10;i16;i+),if(i%3=0),continue;,else,printf(%5d,i);,=10=11,=10=11=13=14,2024/8/8,24,省级精品课程程序设计基础,goto,语句,语法格式,goto,标号,;,功能:无条件转移语句,使流程转移到相应标号所在的语句,并从该语句继续执行。,标号语句的形式,标号,:,语句,;,语句标号用标识符表示。,2024/8/8,25,省级精品课程程序设计基础,goto,语句举例,#include,main(),int i,s=0;,for(i=1;i=10;i+),s=s+i;,printf(s=%dn,s);,?,能否用,goto,语句实现,#include,main(),int i=1,s=0;,if(i=10),s=s+i;,i+;,goto loop;,printf(s=%dn,s);,loop:,2024/8/8,26,省级精品课程程序设计基础,while,语句,和,do,while,语句的区别,for,语句,-,for(,表达式,1;,表达式,2;,表达式,3),循环体语句,记得常用哦,for,语句是,C,语言中最有特色的语句,使用最为灵活方便,区别体现在首次进入时表达式为,“,假,”,上,(,餐馆吃饭,),i=1,;,for,(,i,1,;,i10,;,i+,),while,(,i10)sum,sum+i,;,sum,sum+i,;,i+,;,在这种情况下,完全等同于,while,语句。可见,for,语句比,while,语句功能,强,除了可以给出循环条件,i10,外,还可以赋初值,i,1,,使循环变量自,动增值,i+,等(增加了整体感和可读性),;,此外,for,语句中的表达式可以,缺省,当然,在省略某个表达式时,应在适当位置进行循环控制的必要,操作,以保证循环的正确执行。,2024/8/8,27,省级精品课程程序设计基础,5.5,循环的嵌套,while,(,表达式,),语句,while,(,表达式,),while,(,表达式,),do,语句,while(,表达式,),;,语句,while,(,表达式,),for(,表达式,1;,表达式,2;,表达式,3,),语句,语句,for(,表达式,1,;,表达式,2,;,表达式,3,),语句,while,(,表达式,),语句,do,语句,while(,表达式,),;,for(,表达式,1;,表达式,2;,表达式,3,),语句,语句,for(i=,1,;i=,10,;i+),for(j=,1,;j=,5,;j+),printf,(“”);,2024/8/8,28,省级精品课程程序设计基础,循环嵌套举例(图形的输出),while,、,do-while,、,for,循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉。,注意,*,for(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,i=1;i=5;i+,),/*,循环变量,i,控制行数*,/,putchar(n);,/*,每行输出后换行*,/,*,*,*,*,*,for,(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,实际得到的图形:,*,*,*,*,*,for,(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for,(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for,(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for,(,j=1;j=5;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,源程序:,源程序,2024/8/8,29,省级精品课程程序设计基础,图形的变形,1,*,*,*,*,*,for(,j=1;j=,1,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,2,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,3,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,4,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,5,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,i=1;i=5;i+,),/*,循环变量,i,控制行数*,/,for(,j=1;j=,i,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,putchar(n);,/*,每行输出后换行*,/,源程序:,源程序,2024/8/8,30,省级精品课程程序设计基础,图形的变形,2,*,*,*,*,*,for(,j=1;j=,5,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,4,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,3,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,2,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,j=1;j=,1,;j+,),/*,循环变量,j,控制每行的*个数*,/,putchar(*);,for(,i=1;i=,i,;j-,),putchar(*);,putchar(n);,for(,i=5;i=1;i-,),for(,j=1;j=,i,;j+,),putchar(*);,putchar(n);,源程序,源程序,2024/8/8,31,省级精品课程程序设计基础,图形的变形,3,*,*,*,*,*,for(k=1;k=,4,;k+),putchar();,for(j=1;j=,1,;j+),putchar(*);,每行需要输出的字符有两种:,空格,和,*号,每行先输出空格每行空格之后输出*号,for(k=1;k=,3,;k+),putchar();,for(j=1;j=,2,;j+),putchar(*);,for(k=1;k=,2,;k+),putchar();,for(j=1;j=,3,;j+),putchar(*);,for(k=1;k=,1,;k+),putchar();,for(j=1;j=,4,;j+),putchar(*);,for(k=1;k=,0,;k+),putchar();,for(j=1;j=,5,;j+),putchar(*);,for(,i=1;i=5;i+,),for(,j=1;j=i;k-,),putchar();,源程序:,2024/8/8,32,省级精品课程程序设计基础,图形的变形,5,编程序,输出以下图形。,一共有,4,行,每行由空格和星号组成:星号按行增加,空格数按行减少,变量,i,控制输出行数,从,1,变化到,4,变量,j,控制输出每行的空格和星号:,j,从,1,变化到,4,i,,每次输出一个空格,j,从,1,变化到,2*i,1,,每次输出一个星号,main(),int i,j;,for(i=1;i=4;i+),for(j=1;j=4-i;j+),printf();,for(j=1;j=2*i-1;j+),printf(,*,);,printf(n);,思路:,*,*,*,*,源程序:,2024/8/8,33,省级精品课程程序设计基础,思考?,*,*,*,*,*,*,*,实验指导书中程序填空,*,*,*,*,2024/8/8,34,省级精品课程程序设计基础,复合结构程序举例,例,1,在年号,20002020,之间找出所有的闰年。,解题分析,起始年号是,2000,,终止年号是,2020,,在这个范围内判断每个年份是否是闰年。,如何判断某年是否是闰年。,年号能被,4,整除,是闰年。,年号不能被,4,整除,不是闰年。,循环结构,选择结构,2024/8/8,35,省级精品课程程序设计基础,例题:判断闰年,#include,/*,程序结构:循环,+,选择,复合结构*,/,main(),int year;,clrscr();,for(year=2000;year=2020;year+),/*,在年号,2000,2020,范围内*,/,if(year%4=0&year%100!=0|year%400=0)/*,对某个年号进行判断*,/,printf(%d,YES!n,year);,else,printf(%d,NO!n,year);,2024/8/8,36,省级精品课程程序设计基础,复合结构程序举例,例,2,判断数据是否是素数。,解题分析,素数的定义,:一个数如果只能被,1,和它自身整除,则这个数就是素数。,如何判断某个是否是素数。,从,2,开始,直到,n-1,。,如果,某次,能够整除,则停止判断,这个数不是素数。,如果,每次,都不能整除,则这个数是素数。,2024/8/8,37,省级精品课程程序设计基础,例题:判断素数,#include,main(),int n,m,flag=0;,clrscr();,scanf(%d,for(m=2;m=n-1;m+),if(n%m=0),flag=1;,break;,if(flag=0),printf(%d,YES!n,n);,else,printf(%d,NO!n,n);,问题,1,:如果将,for,语句替换为,for(m,=2;,m=,sqrt(n),;m,+),,对程序执行有何影响?,A1,:循环结构的执行次数减少,提高了算法效率。,问题,2,:变量,flag,在程序中的作用是什么?,A2,:标识符的作用,用它的值来标识判断的数据是否是素数。,flag=0,,是素数。,flag=1,,不是素数。,问题,3,:,break,语句的作用是什么?没有该语句程序是否正确?,A3,:,break,语句的作用是跳出循环结构。没有该语句程序是正确的,但是会降低算法效率。,2024/8/8,38,省级精品课程程序设计基础,总结:,1,、,break,语句:,使流程跳出该循环结构,2,、,continue,语句:,结束本次循环,立即进入下一次循环,3,、循环的嵌套,2024/8/8,39,省级精品课程程序设计基础,经常,不断地学习,你就什么都知道。你知道得越多,你就越有,力量,Study Constantly,And You Will Know Everything.The More You Know,The More Powerful You Will,Be,写在最后,谢谢你的到来,学习并没有结束,希望大家继续努力,Learning Is Not Over.I Hope You Will Continue To Work Hard,演讲人:,XXXXXX,时 间:,XX,年,XX,月,XX,日,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!