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

    循环结构的程序设计.ppt

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

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

    循环结构的程序设计.ppt

    C语言程序设计,第六章 循环结构的程序设计,主要内容,循环的基本概念 不同形式的循环控制 多重循环问题,问题打印整数110打印整数1100打印整数1n,i=1;printf(%d,i);i+;printf(%d,i);i+printf(%d,i);i+,i=1;printf(%d,i);i+;printf(%d,i);i+;printf(%d,i);i+;,i=1;while(i=n)printf(%d,i);i+;,循环语句,循环概念,循环 反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。C语言中控制循环的语句 while do-while for,一、while当型循环结构,一般形式:while(表达式)循环体语句;,当表达式为非0值时,执行while语句中的内嵌语句。,其特点是:先判断表达式,后执行循环体语句。,while语句,100求 sum=i i=1sum=0sum+1 sum sum+2 sum sum+3 sum sum+100 sum,sum=sum+?,sum=0;i=1;while(i=100)sum=sum+i;i+;,循环不变式,例1:求1到100的和#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%dn,sum);,说明:(1)循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现(2)在循环体中应有使循环趋向于结束的语句。,运行结果:5050,二、do-while直到型循环结构,一般形式:do 循环体语句 while(表达式);,执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,do-while语句的执行流程,循环控制条件,循环体循环不变式改变循环条件,do-while语句的特点:先执行循环体,然后判断循环条件是否成立。,例2 求1到100的和#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(%dn,sum);,运行结果:5050,例3:输入一个=0 的整数,要求以相反的顺序输出该数。例如:输入12345,则输出为54321。,12345 5 4 3 2 112345%10=5 12345/10=1234 1234%10=4 1234/10=123 123%10=3 123/10=12 12%10=2 12/10=1 1%10=1 1/10=0 结束,循环不变式 x%10 x=x/10循环条件 x=0,基本思路:可以从个位开始,按位输出整数的每一位确 定:循环条件和循环不变体,#include void main()unsigned int number;printf(Input the number:);scanf(%d,二、do-while直到型循环结构,while语句和用do-while语句的比较:在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。,例3 while和do-while循环的比较(1)(2)#include#include void main()void main()int sum=0,i;int sum=0,i;scanf(“%d”,运行结果:1 sum=55 再运行一次:11sum=0,运行结果:1 sum=55 再运行一次:11sum=11,说明:(1)当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。否则,二者结果不相同。,三、for 循环结构,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。,一般形式:for(表达式1;表达式2;表达式3)循环体语句;,循环初始条件,循环控制条件,循环体,for语句等价于下列语句:表达式1;while(表达式2)语句;表达式3;,for(表达式1;表达式2;表达式3)循环体语句;,三、for 循环结构,for语句最简单的应用形式也就是最易理解的如下形式:for(循环变量赋初值;循环条件;循环变量增值)循环体语句,例如:for(i=1;i=100;i+)sum=sum+i;,它相当于以下语句:i=1;while(i=100)sum=sum+i;i+;,显然,用for语句简单、方便。,三、for 循环结构,说明:(1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如 for(;i=100;i+)sum=sum+i;执行时,跳过“求解表达式1”这一步,其他不变。,三、for 循环结构,说明:(2)for语句的一般形式中的“表达式2”也可以省略,如果表达式2省略,即不判断循环条件,循环无终 止地进行下去。也就是认为表达式2始终为真。,例如:for(i=1;i+)sum=sum+i;表达式1是一个赋值表达式,表达式2空缺。它相当于:i=1;while(1)sum=sum+i;i+;,三、for 循环结构,说明:(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。如:,如:for(i=1;i=100;)sum=sum+i;i+;在上面的for语句中只有表达式1和表达式2,而没有表达式3。i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,三、for 循环结构,说明:(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for(;i=100;)while(i=100)sum=sum+i;相当于 sum=sum+i;i+;i+;在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。,三、for 循环结构,说明:(5)3个表达式都可省略,如:for(;)语句 相当于 while(1)语句 即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。,三、for 循环结构,说明:(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。,如:for(sum=0;i=100;i+)sum=sum+i;表达式3也可以是与循环控制无关的任意表达式。,三、for 循环结构,说明:表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。,如:for(sum=0,i=1;i=100;i+)sum=sum+i;或 for(i=0,j=100;i=j;i+,j-)k=i+j;表达式1和表达式3都是逗号表达式,各包含两个赋值表达式,即同时设两个初值,使两个变量增值。,三、for 循环结构,说明:(7)表达式一般是关系表达式(如i=100)或 逻辑表达式(如ab&xy);但也可以是数值表达式或字符表达式;只要其值为非零,就执行循环体。,三、for 循环结构,例:for(i=0;(c=getchar()!=n;i+=c);在表达式2中先从终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于n(换行符),如果不等于n,就执行循环体。,注意:此for语句的循环体为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的。可见for语句功能强,可以在表达式中完成本来应在循环体内完成的操作。,三、for 循环结构,注意:C语言中的for语句比其他语言(如BASIC,PASCAL)中的FOR语句功能强得多。可以把循环体和一些与循环控制无关的操作也作为表达式1或表达式3出现,这样程序可以短小简洁。但过分地利用这一特点会使for语句显得杂乱,可读性降低,最好不要把与循环控制无关的内容放到for语句中。,三、for 循环结构,main()float t,sum;int n;sum=0;t=1;for(n=1;n=20;n+)t*=n;sum+=t;printf(“1!+2!+3!+.+n!=%en”,sum);,运行程序,1!+2!+3!+.+n!=2.56133e+18,计算 n!,计算累加和,例4:用for循环语句计算 1!+2!+3!+.+n!(n=20),设:n 为数列项变量和循环控制变量。sum 为累加和变量。t 为n 阶乘变量。,一个循环体内又包含另外一个或几个完整的循环结构称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。,三种循环(while循环、do-while循环和for循环)可以互相嵌套。,四、循环嵌套,四、循环嵌套,下面几种都是合法的形式:(1)while()(2)do(3)for(;)while()do for(;)while();while();,(4)while()(5)for(;)(6)do do while()for(;)while()while(),四、循环嵌套,嵌套在循环体内的循环体称为内循环,外面的循环称为外循环。,例如:#include void main()int i,j,k=0;for(i=1;i=10;i+)for(j=1;j=10;j+)k+;printf(k=%d,k);,循环嵌套的运行过程:外层循环取一个值,内层循环取遍所有的值。,故上述程序的输出结果为:,k=100,四、循环嵌套,嵌套结构的规则:内外循环不能交叉。,内循环入口,内循环出口,外循环入口,外循环出口,错误!交叉循环,程 序 举 例 多重循环的应用,例5.搬砖问题:有36块砖,由36人搬:一男搬4块,1女搬3块,两个小孩抬一块,一次全部搬完。问男、女、小孩人数各若干?,#include#include void main()int man,woman,child;for(man=0;man9;man+)for(woman=0;woman12;woman+)child=36-man-woman;if(4*man+3*woman+child/2=36),程 序 举 例 多重循环的应用,例5.编程实现打印下列图形。,#include#include void main()int i,j,line;printf(please input lines for print:);scanf(%d,五、goto语句以及用goto语句构成循环,goto语句为无条件转向语句,它的一般形式为 goto 语句标号;,语句标号用标识符表示,它的定名规则与变量名相同。例如:goto label_1;合法;goto 123;不合法.,功能:将程序流程无条件地转向指定标号所在的语句继续执行。,一般来说,可以有两种用途:(1)与if语句一起构成循环结构;(2)从循环体中跳转到循环体外(不能用于从循环体外转向循环体内)。,五、goto语句以及用goto语句构成循环,例6 求1到100的和void main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(%dn,sum);,运行结果:5050,应用1:goto与if语句一起构成循环结构,#include void main()int n=1;while(1)if(n=20)goto all_done;else n+;all_done:,语句标号的引用,语句标号的定义,goto应用2:实现控制程序从循环内部退出。,main().goto a1;.add().a1:.,主函数,自定义函数,不能将控制从一个函数的某点转到另一函数的指定位置。,goto语句的使用范围仅局限于函数内部,不能将控制从一个函数的某点转到另一函数的指定位置。,结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。,使用goto语句从循环体中跳转到循环体外这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。,例如:要从多层循环的内层跳到外层循环时,五、goto语句以及用goto语句构成循环,六、break语句和continue语句,1.break语句 break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。,一般形式:break;,注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。,例7:求300以内能被17整除的最大的数。,#include void main()int x,k;for(x=300;x=1;x-)if(x%17=0)break;printf(x=%d,x);,找到满足条件的最大数,结束循环,六、break语句和continue语句,2.continue语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。,一般形式:continue;,六、break语句和continue语句,例8:求300以内能被17整除的所有整数。,#include void main()int x,k;for(x=1;x=300;x+)if(x%17!=0)continue;printf(x=%dn,x);,continue语句只结束本次循环,而不是终止整个循环的执行。,continue语句和break语句的区别,break语句是结束整个循环过程,不再判断执行循环的条件是否成立。,六、break语句和continue语句,while(条件)语句A;break;语句 B;,真,语句B,条件,语句A,break,假,结束循环,至此位置,六、break语句和continue语句,while(条件)语句A;continue;语句 B;,真,至此位置,七、几种循环的比较,(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。,(2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i+,或i=i+1等)。,for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。,(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。,七、几种循环的比较,(4)while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。,七、几种循环的比较,八、程 序 举 例,例9 用/41-1/3+1/5-1/7+公式求的近似值,直到某一项的绝对值小于10-6为止。,#include#includevoid main()int s;float n,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(“pi=%10.6fn”,pi);,运行结果:pi=3.141594,例10 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即:F(1)=1(n=1)F(2)=1(n=2)F(n)=F(n-1)+F(n-2)(n3),八、程 序 举 例,例9 求Fibonacci数列前40个数。#include void main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(“%12ld%12ld”,f1,f2);if(i%2=0)printf(“n”);f1=f1+f2;f2=f2+f1;,运行结果:,例11 判断m是否素数。算法思想:让m被2到k(k=sqrt(m)除,如果m能被2 k之中任何一个整数整除,则提前结束循环;如果m不能被2 k(即)之间的任一整数整除,则在完成最后一次循环后,循环变量i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,因此输出“是素数”。,八、程 序 举 例,例11 判断m是否素数。#include#include void main()int m,i,k;scanf(“%d”,运行结果:1717 is a prime number,例12 求100200间的全部素数。#include#include void main()int m,k,i,n=0;for(m=101;m=k+1)printf(%5d,m);n=n+1;if(n%10=0)printf(n);printf(n);,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开