收藏 分销(赏)

第4章循环结构程序设计.ppt

上传人:xrp****65 文档编号:10304604 上传时间:2025-05-21 格式:PPT 页数:67 大小:1.07MB
下载 相关 举报
第4章循环结构程序设计.ppt_第1页
第1页 / 共67页
第4章循环结构程序设计.ppt_第2页
第2页 / 共67页
点击查看更多>>
资源描述
<p>单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 循环结构程序设计,输出一行,10,个星号“,*,”语句是?,printf,(,“,*n,”,);,输出两行,10,个星号“,*,”语句是?,printf,(,“,*n,”,);,printf,(,“,*n,”,);,问题的提出,输出,100,行,10,个星号“,*,”语句是?,用循环结构解决,本章将介绍的内容,4,.,1,for,语句,4.2,while,语句,4.3,do-while,语句,4.4,break,语句,4.5,循环语句的嵌套,重点:,for,语句的使用;求累加和与阶乘、最大值的算法,难点:,循环概念的建立;双重循环;判断素数的算法;迭代算法,主要内容:,for,语句;,while,语句、,do-while,语句;计算累加值、计算阶乘值;求最大数、求近似值;穷举法;,break,语句;单步执行的调试方法,贯穿实例:,主菜单中重复选择菜单,4.1 for,语句,【,例,4.1】for,语句的引例。,求,1+2+3+100,的值,并将其结果放在变量,sum,中。,P88,返回,for(,i=1,;i=,100,;i+),sum=sum+2;,sum=sum+1;,sum=0;,不确定,sum,0,1,3,sum=sum+3;,6,sum=sum+100;,5050,sum=sum+i;,规律是:,表示为:,for(i,=1;i=100;i+),sum=sum+i;,是,for,语句!,#include ,main(),int,i=0,sum=0;,for,(i=1;i=100;i+),sum=,sum+i,;,printf(1+2+3+.+100=%,dn,sum,);,运行结果:,1+2+3+.+100=5050,循环体,关键字,for,for,语句的一般形式,for(,表达式,1;,表达式,2;,表达式,3),循环体,注意此处不是,“,”!,执行过程,表达式,2,处理表达式,1,执行循环体,非,0,0,处理表达式,3,for(i=1;i=100;i=i+1),printf,(,“,*n,”,);,输出,100,行,10,个星号“,*,”语句是?,i+,讨论题,4.1,若要计算,2+4+6+,+100,的值如何书写,for,语句?,讨论题,4.2,如何通过,for,循环计算,的值?,【,例,4,.,2,】,键盘输入,10,个学生的成绩,输出各成绩和平均成绩。,编程点拨:,确定两件事情,哪些语句重复执行,执行多少次循环体,输入,10,个,重复,10,次,scanf(%d,printf(%d,score);,sum=sum+score;,printf(n,);,ave,=(float)sum/10;,printf(ave,=%,fn,ave,);,用复合语句,循环体是,3,条语句,for(i=1;i=10;i+),scanf(%d,&amp;score,);,printf(%d,score);,sum=,sum+score,;,main(),int,i=0,score=0,sum=0;float,ave,=0;,printf(Input,score:n);,不必放在循环体内,Input score:,95 100 65 45 60 89 78 80 83 70,95 100 65 45 60 89 78 80 83 70,ave,=76.500000,运行结果如下:,【,例,4,.,3,】,在,3100,之间所有,3,的倍数中,找出个位数为,2,的数。,编程点拨,用,i%10,表示个位数,3100,内,3,的倍数有,3 6 9 99,for(i=3;i=100;i=i+3),if(i%10=2),将最小的,3,的倍数,3,赋给,i,当,i,的值小于等于,100,时,输出,i,的值,i,个位数是,2,?,真,假,i,的值增,3,流程图,#include ,main(),int,i=0;,for(i=3;i=100;i=i+3),if(i%10=2),printf(%4d,i);,printf(n,);,输出:,按,4,个字符位,输出整数,12,42,72,_,分支结构,循环结构,顺序结构,用三种基本结构能写出所有复杂程序,讨论题,4.3,若将例,4.3,的功能改为:找出十位或个位是,2,的所有三位数,程序应如何改写?,【,例,4,.,4,】,输出,1!,、,2!,、,3!,、,、,n!,其中,n!=1,2,3,n,n,的值从键盘输入,算法和求,1+2+100,的算法类似,但在本程序中,fac,的初值为,1,,不是,0,。,编程点拨,#include,main(),int,i=0,n=0,fac=1;,printf(Input,n:);,scanf,(%d,for(i=1;i=n;i+),fac,=,fac,*i;,printf,(%d!=%,dn,i,fac,);,注意数据溢出,讨论题,4.4,如果要计算,2,1,、,2,2,、,2,3,、,、,2,n,的值,应如何修改本程序?,课堂练习,修改例,4.4,中的程序,计算,1!+2!+3!+,+n!,的值。,修改例,4.4,中的程序,计算,2,1,、,2,2,、,2,3,、,2,n,的值。,修改例,4.4,中的程序,计算,2,1,+2,2,+2,3,+,+2,n,的值。,教学总结,本次课的讲授内容是:,1,用循环解决问题的场合。,2,for,语句。,3,累加算法。,4,求平均值算法。,5,连乘算法。,作业,课堂上未做完的内容,理解并运行例,4.54.8,预习,例,4.9,例,4.15,【,例,4,.,5,】,在两行上分别按顺序和逆序输出,26,个英文大写字母。,在,ASCII,码表中,字母按,A,到,Z,的顺序排列,使用循环通过,A,计算,(即,A,+i,,,i=0,1,2,25,),编程点拨,#include,main(),int,i=0;,for(i=0;i=0;i-),printf(%c,A+i,);,printf(n,);,printf(n,);,顺序输出,逆序输出,注意位置,不是,i+,讨论题,4.5,如何编写输出,ASCII,码表的程序?,演示,用设断点的方法,调试例,4,.,5,程序,【,例,4,.,6,】,从键盘输入,10,个数,求其中最大值。,编程点拨:,用例,3.6,中介绍的算法,数据较多,用循环结构,#include,main(),int,a=0,max=0,i=0;,printf(,n,max,=%,dn,max,);,scanf(%d,&amp;a,);,printf(%d,a);,printf(Input,data:);,输入第一个数并输出,max=a;,第一个数存入,max,输入后九个数并输出,for(i=1;i=,9,;i+),scanf(%d,&amp;a,);,printf(%d,a);,if(maxa),max=a;,运行时试最大值在,最前,最后,中间某一位置,的情况,思考:,100,个数中求最大,如何修改?,同一个问题,可能有多种算法,在学习过程中,勤于思考,善于发现问题,编写出更优化的程序。,以上循环共同点:容易确定循环次数,for,语句一般用于循环次数已知的情况。,如果次数事先不知,则常用,while,语句或,do-while,语句。,说明:,4.2 while,语句,【,例,4,.,9,】,从键盘输入若干个非,0,数据,求它们的和。用,0,结束循环的执行。,编程点拨:,本题需要用循环结构,用,for,语句不方便,下面用,while,语句,P97,返回,#include,main(),int,a=0,sum=0;,printf(Input,data:n);,scanf(%d,&amp;a,);,while(a!=0),printf(%4d,a);,sum=,sum+a,;,scanf(%d,&amp;a,);,printf(nsum,=%,dn,sum,);,进入循环前,先输入一个数,当,a,为非,0,时,执行循环体,while,关键字,第,1,次运行:,Input data:,Input data:,11 22 33 44 55 66 77 88 99 0 1 2,11 22 33 44 55 66 77 88 99,sum=495,第,2,次运行:,0,(空一行),sum=0,sum,的初值,while,语句的一般形式:,while(,表达式,),循环体,执行过程,表达式,循环体,非,0,0,4.3 do-while,语句,do-while,和,while,很相似,区别:,while,先判断表达式的值,后执行循环体,do-while,先执行循环体,再判断表达式,P100,返回,【,例,4.12】,从键盘输入若干个非,0,数据,求它们的和。用,0,结束循环的执行,.,#include,main(),int,a=0,sum=0;,printf(Input,data:n);,do,scanf(%d,&amp;a,);,printf(%4d,a);,sum=,sum+a,;,while(a!=0);,printf(nsum,=%,dn,sum,);,不要丢,do,关键字,当,a,为非,0,时,执行循环体,第,1,次运行:,Input data:,Input data:,11 22 33 44 55 66 77 88 99 0 1 2,11 22 33 44 55 66 77 88 99,0,sum=495,第,2,次运行:,0,0,sum=0,sum,的初值与,0,的和,do-while,语句的一般形式:,do,循环体,while(,表达式,),;,执行过程,非,0,表达式,循环体,0,do-while,先执行一次循环体,后判断表达式,循环体至少被执行一次,while,先判断表达式,后执行循环体,循环体有可能一次也不被执行,三种循环可以互相转换,根据不同情况,选择具体循环,说明,4.4 break,语句,4,.,4.1,循环体中使用,break,语句,P103,返回,4.4.1,循环体中使用,break,语句,结构化程序设计只有一个入口、一个出口,顺序、分支、循环结构满足其要求,为提高执行效率,常要提前终止循环,常用,break,语句实现提前终止循环,P103,【,例,4.14,】,break,语句示例,#include,main(),int,i=0,sum=0;,for(i=1;i=10;i+),if(i%3=0)break;,sum=,sum+i,;,printf(i,=%,d,sum,=%,dn,i,sum,);,运行结果:,i=3,sum=3,break;,关键字,1,和,2,的和,i10,说明,提前退出循环,执行过程,i=1,i=i+1,i10,假,真,sum=,sum+i,i%3=0,真,假,循环体,第,1,个出口,第,2,个出口,输出,i,和,sum,的值,请注意,break,语句,只能在,switch,语句体和循环体内使用,功能是,提前退出本层的,switch,语句体或循环体,课堂练习,田径赛,2000,米比赛需要在,400,米的操场上跑,5,圈,。,编写程序,每跑一圈(输入回车键表示跑了一圈),显示已跑的圈数。,教学总结,1,while,语句。,2,do-while,语句。,3,break,语句。,作业,1,自学例,4.10,、例,4.13,2,P123 4,、,11,、,12,预习,例,4.17,、例,4.19,4.5,循环语句的嵌套,【,例,4.17】,(,1,),输出以下内容:,*,*,*,P105,返回,分析:,一行输出,10,个,“,*,”,的语句是,for(j=1;j=10;j+),printf,(*);,输出三行,每行输出,10,个,“,*,”,的语句是,for(j=1;j=10;j+),printf,(*);,printf(n,);,for(j=1;j=10;j+),printf,(*);,printf(n,);,for(j=1;j=10;j+),printf,(*);,printf(n,);,分析:,一行输出,10,个,“,*,”,的语句是,for(j=1;j=10;j+),printf,(*);,输出三行,每行输出,10,个,“,*,”,的语句是,for(i=1;i=3;i+),for(j=1;j=10;j+),printf,(*);,printf(n,);,控制行数,控制列数,输出一行后换行,【,例,4.17】,(,2,),输出以下内容:,1 2 3 4 5 6 7 8 9 10,1 2 3 4 5 6 7 8 9 10,1 2 3 4 5 6 7 8 9 10,#include ,main(),int,i=0,j=0;,for(i=1;i=3;i+),for(j=1;j=10;j+),printf(n,);,printf(%3d,j);,每列上输出的值与,j,有关,【,例,4.17】,(,3,),输出以下内容:,*,*,*,#include,main(),int,i=0,j=0;,for(i=1;i=3;i+),for(j=1;j+),printf,(*);,printf(n,);,j=i,每行输出的数量与,i,有关,在一个循环体内又包含另一个循环。称它为,嵌套循环,。,for while do-while,可以,互相嵌套,贯穿实例,(成绩管理),编写在主菜单中重复选择选项的程序。,显示的菜单,选择合法值时的显示,Y,或,y,继续,N,或,n,结束,贯穿实例,(成绩管理),编写在主菜单中重复选择选项的程序。,选择非合法值时的显示,清屏后显示,习题课(,1,节),根据本班情况自行安排,教学总结,本次课的讲授内容是:,1,循环语句的嵌套。,2,完善贯穿实例。,作业,P125 16,、,18,开始实现综合设计(分组进行),(模仿贯穿实例编写,详见网络学堂),预习,4.7,节 上机训练,上机实验(,2,节),完成训练,4.1,完成训练,4.2,完成训练,4.3,完成训练,4.4,P120,</p>
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服