C语言循环结构的程序设计.ppt

上传人:wuy****n92 文档编号:77678379 上传时间:2023-03-16 格式:PPT 页数:34 大小:472.50KB
返回 下载 相关 举报
C语言循环结构的程序设计.ppt_第1页
第1页 / 共34页
C语言循环结构的程序设计.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《C语言循环结构的程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言循环结构的程序设计.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第6 6章章 循循环结构的程序构的程序设计u循循环结构:构:l当型循环结构当型循环结构l直到型循环结构直到型循环结构PA假假真真当当P为真为真AAP假假真真A直到直到P为假为假注:注:A可以是一个简单语句,也可以是一个基本结构可以是一个简单语句,也可以是一个基本结构6.1 概述概述C语言可实现循环结构的语句:语言可实现循环结构的语句:用用goto 和和 if 构成循环构成循环while 语句语句do while 语句语句for 语句语句ugotogoto语句一般格式:语句一般格式:goto 语句标号语句标号;标号标号:语句语句;u功能:无条件转移语句功能:无条件转移语句u说明:说明:不能用整

2、数作不能用整数作标号号只能出只能出现在在gotogoto所在函数内所在函数内,且唯一且唯一只能加在可只能加在可执行行语句前面句前面限制使用限制使用gotogoto语句句6.2 goto语句以及用句以及用goto语句构成循句构成循环例例 用用if 和和goto语句构成循环,求语句构成循环,求/*c5_1.c*/#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体分析:分析:sum=sum+1=1sum=su

3、m+2=1+2=3sum=sum+3=3+3=6sum=sum+4=6+4=10sum=sum+100=4950+100=5050u一般形式一般形式:while(表达式表达式)循环体语句循环体语句u执行流程执行流程:表达式表达式循环体循环体假假(0)真真(非非0)while6.3 while语句句此此处处无无;u特点特点:先判断表达式,后执行循环体(当型):先判断表达式,后执行循环体(当型)u说明说明:循循环体有可能一次也不体有可能一次也不执行行循循环体可体可为任意任意类型型语句句下列情况,退出下列情况,退出whilewhile循循环:l条件表达式不成立(条件表达式不成立(为零)零)l循循环体

4、内遇体内遇break,return,gotobreak,return,goto无限循无限循环:while(1)while(1)循循环体体;例例 用用while循环求循环求 /*c5_3.c*/#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体例例 显示显示110的平方的平方/*c5_4.c*/#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;运行

5、结果:运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100u一般形式:一般形式:do 循环体语句循环体语句 while(表达式表达式);u执行流程:执行流程:do循环体循环体表达式表达式假假(0)真真(非非0)while6.4 do-while语句句此此处处有有;u特点:先执行循环体,后判断表达式(直到型)特点:先执行循环体,后判断表达式(直到型)u说明说明:至少至少执行一次循行一次循环体体do-whiledo-while可可转化成化成whilewhile结构构表达式循环体假(0)真(非0)循环体While循环例例

6、用用dowhile循环求循环求 /*c5_5.c*/#include main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);例例 while和和dowhile比较比较/*c5_6_1.c*/#include main()int i,sum=0;scanf(%d,&i);do sum+=i;i+;while(i=10);printf(%d,sum);/*c5_6_2.c*/#include main()int i,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%d,sum);结

7、论:当结论:当 while后的表达式第一次的值为后的表达式第一次的值为“真真”时,两种结果相同,否则不同。时,两种结果相同,否则不同。u一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)循循环体体语句句u执行流程:执行流程:表达式表达式2循环体循环体假假(0)真真(非非0)for表达式表达式1表达式表达式36.5 for语句句1.1.先求解表达式先求解表达式1 1;2.2.求解表达式求解表达式2 2,若其,若其值为真真(非非0)0),则执行循行循环体的内容,体的内容,然后然后执行第行第3 3步。若步。若为假假(0)(0),则结束循束循环,执行行forfor语句下句下面

8、一条面一条语句。句。3.3.若表达式若表达式为真,真,执行指定的行指定的语句后,句后,求解表达式求解表达式3 3。4.4.返回第返回第2 2步步执行。行。此此处处无无;uforfor语句一般应用形式语句一般应用形式:for(循循环变量量赋初初值;循循环条件条件;循循环变量增量增值)循循环体体语句句 u说明:说明:forfor语句中句中表达式表达式1 1、表达式、表达式2 2、表达式、表达式3 3类型任意,都可省型任意,都可省略,但分号;不可省略,但分号;不可省无限循无限循环:for(;):for(;)forfor语句可以句可以转换成成whilewhile结构构表达式表达式1;1;while(w

9、hile(表达式表达式2)2)循循环体体语句;句;表达式表达式3;3;例例 用用for循环求循环求#include main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum);此此处处无无;例:例:#include main()int i=0;for(i=0;i10;i+)putchar(a+i);运行结果:运行结果:abcdefghij例:例:#include main()int i=0;for(;i10;i+)putchar(a+i);例例:#include main()int i=0;for(;i10;)putchar(a+(i+);

10、例例:#include main()int i=0;for(;i10;putchar(a+i),i+);省省略略表表达达式式1省省略略表表达达式式1、3省省略略循循环环体体/*c5_7.c*/main()int i,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);/*c5_8.c*/#includemain()char c;for(;(c=getchar()!=n;)printf(%c,c);/*c5_9.c*/#include main()int i,c;for(i=0;(c=getchar()!=n;i+=3)printf

11、(%c,i+c);表达表达式式 1、3为为逗号逗号表达表达式式结论:结论:for语句的功能强大。语句的功能强大。u三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限u外层循环可包含两个以上内循环外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉u嵌套循环的执行流程嵌套循环的执行流程(1)while()while().(2)do do while();.while();(3)while()do while();.(4)for(;)do while();while().内循环内循环外循环外循环内循环内循环u嵌套循环的跳转嵌套循环的跳转 禁止:禁止:从外从外层跳入内跳入内层跳入同跳入同层

12、的另一循的另一循环向上跳向上跳转6.6 循循环的嵌套的嵌套12345678912436991827364554637281.例例 循环嵌套,输出九九表循环嵌套,输出九九表ij/*c5_10.c*/#include main()int i,j;for(i=1;i10;i+)printf(%4d,i);printf(n-n);for(i=1;i10;i+)for(j=1;j=i;j+)printf(j=i)?%4dn:%4d,i*j);i10printf假假(0)真真(非非0)i=1j+j=1j=i真真(非非0)假假(0)i+for(i=1;i10;i+)for(j=1;j=i;j+)printf

13、(j=i)?%4dn:%4d,i*j);外循环外循环内循环内循环6.7 几种循几种循环的比的比较1.三种循环均可处理同一问题;三种循环均可处理同一问题;2.for和和while语句为先判断后执行,语句为先判断后执行,do-while语句语句则先执行后判断;则先执行后判断;3.do-while和和while 语句多用于循环次数不定的情语句多用于循环次数不定的情况,循环次数确定的用况,循环次数确定的用for语句更方便;语句更方便;4.do-while语句更适合第一次肯定执行的情况;语句更适合第一次肯定执行的情况;5.do-while和和while语句只有一个表达式,用于控制语句只有一个表达式,用于

14、控制循环是否进行。循环是否进行。for语句有三个表达式,不仅可以语句有三个表达式,不仅可以控制循环是否进行,而且能为循环变量赋初值及控制循环是否进行,而且能为循环变量赋初值及不断修改其值。故不断修改其值。故for语句功能更强,更灵活。语句功能更强,更灵活。break语句句u一般形式:一般形式:break;u功能:在循环语句和功能:在循环语句和switch语句中,终止并跳语句中,终止并跳出循环体或开关体出循环体或开关体u说明:说明:break只能只能终止并跳出终止并跳出最近一层最近一层的结构的结构break不能用于循环语句和不能用于循环语句和switch语句之语句之外的任何其它语句之中外的任何其

15、它语句之中6.8 break语句和句和continue语句句dobreak;.表达式表达式假假(0)真真(非非0)while表达式表达式break;假假(0)真真(非非0)whileswitch表达式表达式语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase 表达式表达式2break;.假假(0)真真(非非0)for表达式表达式1表达式表达式3例例 break举例:输出圆面积,面积大于举例:输出圆面积,面积大于100时停止时停止#include main()int r;float

16、 area;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);例例 break举例:举例:小写字母转换成大写字母,直至输入非小写字母字符。小写字母转换成大写字母,直至输入非小写字母字符。/*ch6-5-2.c*/#include main()char c;while(1)c=getchar();if(c=a&c=z)putchar(c-a+A);else break;continue语句句u一般形式:一般形式:continue;u功能:结束本次循环,跳过循环体中尚未执行功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判

17、断的语句,进行下一次是否执行循环体的判断u说明:说明:仅用于循环语句中仅用于循环语句中continue 语句仅结束本次循环,但语句仅结束本次循环,但break语句则是结束整个循环过程。语句则是结束整个循环过程。真真(非非0)docontinue;.表达式表达式假假(0)while表达式表达式2continue;.假假(0)真真(非非0)for表达式表达式1表达式表达式3表达式表达式continue;假假(0)真真(非非0)while例例 求输入的十个整数中正整数的个数及其和与平均值求输入的十个整数中正整数的个数及其和与平均值#include main()int i,num=0,a;float

18、sum=0;for(i=0;i10;i+)scanf(%d,&a);if(a=1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi分子:分子:1 1,-1-1,1 1,-1-1分母:分母:1 1,3 3,5 5,7 76.9 程序程序举例例/*c5_11.c*/#include#include 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);例例6.6 用用 公式求公式求的近似值,直到

19、最后一的近似值,直到最后一项的绝对值小于项的绝对值小于10-6为止为止 例例6.7 求求Fibonacci数列:数列:1,1,2,3,5,8,的前的前40个数。个数。F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n3)1534233159710946750255142293524578241578171 18 855553773772584258417711177111213931213938320408320405702887570288739088169390881692 213138989610610418141812865728657196418196418134

20、626913462699227465922746563245986632459863 32121144144987987676567654636846368317811317811217830921783091493035214930352102334155102334155/*c5_12.c*/#include 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;f1=1,f2=1for i=1 to 20输出输出

21、f1,f2f1=f1+f2f2=f2+f1例例6.8 判断判断m是否素数是否素数/*c5_13.c*/#include#include main()int m,i,k;scanf(%d,&m);k=sqrt(m);for(i=2;i=k+1)printf(%d is,m);else printf(%d is not,m);printf(a prime numbern);例例6.9 求求100200间的全部间的全部素数素数读入读入mi=2当当ikm被被i整除整除真真假假用用break结束循环结束循环i=i+1ik+1真真假假输出输出:m”是素数是素数”输出输出:m”不不是素数是素数”k=m例例6-10 译密码译密码例如:例如:Hello,world!Hello,world!译成密码:译成密码:Lipps,asvph!Lipps,asvph!*/#include main()char c;while(c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;printf(%c,c);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com