欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第06章循环程序设计.ppt

    • 资源ID:5635963       资源大小:684.51KB        全文页数:41页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第06章循环程序设计.ppt

    第六章,循环结构程序设计,概述,循环:规律性的重复,即依据特定条件重复执行 基本操作,表现在程序设计中:算法中含有循环结构,例:在屏幕上输出10个*号,printf(“*n”);,又例:在屏幕上输出100,1000,10000个*号,分析,输出一个*号 putchar(*),输出1000个*号 putchar(*)执行1000次即可,分析,基本操作,为什么使用循环算法呢?,降低解题难度,减少程序代码,提高执行效率。,循环型程序设计解题关键,1、确定循环体,确定哪些操作需反复执行,2、确定循环执行条件,确定什么条件循环执行,例:在屏幕上输出1000个*号,1、确定循环体 putchar(*),2、确定循环条件 i=1000(i初值为1),计数器,i=i+1(使循环趋向于结束的操作),又如:求1+2+3+4+.100的和,分析如下:1+2+3+4+.+99+100,部分和,部分和,部分和,和,sum=sum+i,1、确定循环体 sum=sum+i;2、确定循环执行条件 i=100初值:sum=0;i=1;,i+;,sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050,if 和 goto语句,for语句,do while语句,循环语句与洗衣机,循环控制语句的作用:控制核心语句(循环体)的执行次数,循环控制语句,(用来编制循环结构程序),while语句,if 和 goto语句,无条件转向语句,形式:goto 语句标号;(标识符:)功能:从goto语句所在处,转向本函数内标号所在处,可用if和goto 语句构成循环,可执行语句,loop:if(p)s;goto loop;,例:编程输出1000个*号(用if和goto),分析问题,描述算法,#include main()int i=1;loop:if(i=1000)putchar(*);i+;goto loop;,main()int sum=0,i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(“sum is%dn”,sum);,sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050,while语句一般形式:,while(表达式)循环体语句;,执行流程:,简单语句复合语句空语句,特点:先判断表达式,后执行循环体说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;,举例,例:编程输出1000个*号(用while),while(P)s,#include main()int i=1;while(i=100)putchar(*);i+;,又如:求1+2+3+4+.100的和,/#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);,dowhile语句一般形式:,do 循环体语句;while(表达式);,执行流程:,特点:先执行循环体,后判断表达式说明:至少执行一次循环体dowhile可转化成while 结构,While循环,举例,例:编程输出1000个*号(用dowhile),do swhile(p);,#include main()int i=1;do putchar(*);i+;while(i=1000);,#include main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);,又如:求1+2+3+4+.100的和,while和dowhile比较,main()int i,sum=0;scanf(%d,main()int i,sum=0;scanf(%d,for语句一般形式:,for(expr1;expr2;expr3)循环体语句;,执行流程:,说明:for语句中expr1,expr2,expr3 类型任意,都可省略,但分号;不可省无限循环:for(;);for语句可以转换成while结构,expr1;while(expr2)循环体语句;expr3;,例:编程输出1000个*号(用for),for(i=1;i=1000;)putchar(*);i+;,i=1;for(;i=1000;)putchar(*);i+;,#include main()int i;for(i=1;i=1000;i+)putchar(*);,for(i=1;i=1000;putchar(*),i+);,for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,break语句与continue语句(1),break语句形式:break;功能:跳出循环结构,break;,break;,break;,break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,举例,例 break举例:输出半径为110的圆面积,面积大于100时停止,#define PI 3.14159main()int r;float area;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);,小写字母转换成大写字母,直至输入非小写字母,#include main()int i,j;char c;while(1)c=getchar();if(c=a,continue语句形式:continue;功能:结束本次循环,break语句与continue语句(2),continue;,break;,区别,例1:,break语句与continue语句(3),求1+2+3+4+5+6+7+8+9+10+的和,直至S1200。,例2:,求键盘输入若干个整数的和,直至输入-1,main()int i,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);,#includemain()char c;for(;(c=getchar()!=n;)printf(%c,c);,练习程序分析,循环语句的使用规则,循环结构问题分析,本讲总结,重点掌握:,打印26个英文字母(三种语句编程),打印26个英文字母,例4:,三种语句编程,作业:6.2、6.3、6.6,注意点:1、各种控制结构的形式及功能2、如何避免死循环3、break语句和continue语句的功能,循环结构程序设计,程 序 举 例,循环型程序设计的两种典型算法(穷举法,迭代法),穷举法(枚举法),基本思想对问题的所有可能状态一一测试,直到找到问题的答案或将全部可能状态都测试完为止,例:录取新生,循环体 if(p)s1,循环结束条件 i10000,计数器,i=i+1,计数法循环次数已知,设置变量用来描述循环执行的次数,次数达到循环停止,例:打印出100700之间能被2整除不能被6整除的数字,穷举法举例,循环体 1、if(p)s1111111111111,循环结束条件 n700,p:n%2=0,2、n+,标志法,达到某一目标后循环结束(设置标志变量),循环结构的两种典型算法(穷举法,迭代法),循环结构的两种典型算法(穷举法,迭代法),穷举法举例,例:对于任意一整数,判断其是否为素数。,分析:m%n=rm:任意整数 n:2m-12 若r均不为0,则m为素数,循环体 1、r=m%n;,3、n+;,2、if(r=0)break;,循环结束条件 n,或r=0,循环结构的两种典型算法(穷举法,迭代法),迭代法,基本思想不断用新值取代变量的旧值,或由旧值递归出新值,例:人口增长问题,例:求1*2*3*4*5,例:求1-1/2+1/3-1/4+1/5,例:求1+2+3+4.+100,sum=sum+n,例:人口增长问题,迭代法举例,分析,现有人口:12亿1年以后:12*(1+2%)2年以后:(12*(1+2%))*(1+2%)n年以后:(12*(1+2%)*.).*(1+2%),现有人口12亿,每年按2%递增,问十年后将有多少人?,设人口数为m(初值为12亿),则其后每一年的人口数m为m*(1+2%)(注:m为上一年的人口数),m的值不断变化由旧值推出新值,反复执行m=m*(1+2%),循环体 1、m=m*(1+2%),循环结束条件 i10,计数法,2、i+,迭代问题分析关键要素,1、迭代初值 2、迭代公式3、迭代次数,又例:人口增长问题,现有人口12亿,每年按2%递增,问多少年后人口数超过23亿?,1、迭代初值 m=12 2、迭代公式 m=m*(1+2%)3、迭代次数?,循环体 1、m=m*(1+2%)2、year+;(year 初值为0),循环结束条件 m23,标志法,循环型程序设计举例,例1:,/4 求的近似值,直到最后一项的绝对值小于10-6为止,1+2+3+4+5+6+7+8+9+10+.,类似问题,解题关键:1、迭代公式 sum=sum+t;t=.2、迭代初值sum=t=3、迭代次数循环退出的条件,关键是找每一项的变化规律,迭代公式推导:pi=pi+t;,迭代初值:pi=0;n=1;s=1;t=1,t=s/n;,迭代次数:由t决定,当fabs(t)10-6 迭代结束,s=-s;n=n+2;,迭代公式:sum=sum+t;n=n+2;s=-s;t=s/n;,具体分析,相一致,分子:1,-1,1,-1分母:1,3,5,7,.,例2:打印Fibonacci数列前40个数,数列具有如下特点:第1,2两个数为1,1从第三个数开始,该数是其前面两个数之和,F1=1F2=1Fn=F n-1+F n-2(n=3),迭代公式推导 F=F1+F2,F代表数列 从第三项起的某一项,F1代表该项的前两项,F2代表该项的前一项,迭代初值:F1=1,F2=1,迭代次数:由题目要求决定(可用标志法或计数法),1,1,2,3,5,8,F1=F2F2=F,求:打印Fibonacci数列前40个数(方法二),迭代公式推导1 F=F1+F2 F1=F2 F2=F,迭代公式推导2 F1=F1+F2 F2=F1+F2,一次得到两个数,分析F1,F2的含义,思考,例3:判断m是否是素数,算法:m%n=r n:2sqrt(m)若r均不为0,则表明m是素数,循环:穷举法,例4:打印100200之间的全部素数,循环的嵌套(自己分析),例5:译密码(输入一行字符,输出其相应密码),算法分析:1、输入字符为c:(AV或av)转变为c+4;2、输入字符为c:(V或v之后)转变为c-22;,分析程序,例:输入China!转换为Glmre!,void main()char c;while(c=getchar()!=n)if(c=a,编程练习,1、爱因斯坦的阶梯问题,设有一阶梯,每步跨2级,最后余 1级;每步跨3级,最后余2级;每步跨5级,最后余4级;每步跨6级,最后余5级;每步跨7级,正好到阶梯顶。问 至少有多少阶梯?,穷举法,设m为阶梯数 m%2=1&m%3=2&m%5=4&m%6=5&m%7=0,例 循环嵌套,输出九九表,/#include main()int i,j;for(i=1;i10;i+)printf(%4d,i);printf(n-n);for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,例 求输入的十个整数中正数的个数及其平均值,/*ch5_12.c*/#include main()int i,num=0,a;float sum=0;for(i=0;i10;i+)scanf(%d,例(f0r)梯形法求数值积分,main()int m,n,gbs,gys;scanf();if(mn)t=n;n=m;m=t;for(gbs=m;_;gbs=gbs+m);gys=_;_;,“%d,%d”,&m,&n,gbs%n!=0,m*n/gbs,printf(“%d,%d”,gbs,gys),求两个整数的最小公倍数和最大公约数。,

    注意事项

    本文(第06章循环程序设计.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开