最新大学计算机C语言循环结构ppt课件

上传人:仙*** 文档编号:181285328 上传时间:2023-01-11 格式:PPT 页数:34 大小:437KB
收藏 版权申诉 举报 下载
最新大学计算机C语言循环结构ppt课件_第1页
第1页 / 共34页
最新大学计算机C语言循环结构ppt课件_第2页
第2页 / 共34页
最新大学计算机C语言循环结构ppt课件_第3页
第3页 / 共34页
资源描述:

《最新大学计算机C语言循环结构ppt课件》由会员分享,可在线阅读,更多相关《最新大学计算机C语言循环结构ppt课件(34页珍藏版)》请在装配图网上搜索。

1、第五章第五章 循环结构循环结构1+2+3+98+99+100=5050main()int s,i;i=0;s=0;i=1;s=s+i;i=i+1;i=2;s=s+i;i+;.i=99;s=s+i;i+;i=100;s=s+i;i+;i=101那些需要重复执行的操作通常用到循环结构,例如那些需要重复执行的操作通常用到循环结构,例如:求几个数之和;(重复加操作)求几个数之和;(重复加操作)对数组的处理等等。对数组的处理等等。C语言中,有三种语句可以构成循环结构:语言中,有三种语句可以构成循环结构:While、do while、for三种语句三种语句5.1 while语句构成的循环结构语句构成的循环

2、结构一、一、while语句的形式:语句的形式:while(表达式表达式)循环体循环体;while(i0)printf(“*”);i+;表达式表达式循环体语句循环体语句为为0非非0While语句的执行过程:语句的执行过程:1)计算计算while后表达式的值。后表达式的值。2)当值为非当值为非0时,执行循环体;时,执行循环体;3)继续判断表达式,为非继续判断表达式,为非0,执行,执行(2);为为0,执行执行(4)4)当值为当值为0时,退出循环体时,退出循环体While与与if语句的区别:语句的区别:当表达式为真的时候,重复执行语句。当表达式为真的时候,重复执行语句。注意:一定要有表达式变为假的条件

3、,否则无限制的循环下去。注意:一定要有表达式变为假的条件,否则无限制的循环下去。补充例题:计算补充例题:计算1+2+3+98+99+100的值?的值?3、复合语句的用法。、复合语句的用法。1、加数的规律:后一个数比前一个大、加数的规律:后一个数比前一个大1 一直到一直到100 找出变量找出变量I i100,i+;2、循环一次,放一个和。找变量、循环一次,放一个和。找变量sum。和的初值:和的初值:0;积的初值:积的初值:1i=100s=s+i;i+;为为0非非0#include main()int i,sum;i=1;sum=0;while(i=100)sum=sum+i;i+;printf(

4、“sum=%d”,sum);例例1:12+22+32+n2,直到累加和大于或,直到累加和大于或等于等于1000为止。为止。main()int i,sum;i=0;sum=0;while(sum1000)sum+=i*i;i+;printf(“i=%dsum=%dn,i-1,sum);sum1e-6)x1=x2;x2=cos(x1);printf(x=%fn,x2);引申题:习题引申题:习题5.17,1-3+5-7+9-99+101的值。的值。例例3:用迭代法求方程用迭代法求方程x=cosx的根,要求误差小于的根,要求误差小于10的的-6次方。次方。#include#include Main()

5、double x1,x2;x1=0.0;x2=cos(x1);while(fabs(x2-x1)1e-6)x1=x2;x2=cos(x1);printf(“x=%fn”,x2)5.2 do-while语句构成的循环结构语句构成的循环结构一、一、do while的形式:的形式:do 循环体循环体 while(表达式表达式);do i+;s+=I;while(i10);先执行一次循环体,再计算表先执行一次循环体,再计算表达式的值为真,执行循环体;达式的值为真,执行循环体;为假,退出循环。为假,退出循环。表达式表达式循环体语句循环体语句为为0非非0表达式后的分号是个重要的考点。表达式后的分号是个重要

6、的考点。#include main()int i,sum;i=1;sum=0;while(i=100)sum=sum+I;i+;printf(“sum=%d”,sum);#include main()int i,sum;i=1;sum=0;do sum=sum+I;i+;while(i=100);printf(“sum=%d”,sum);用用do while处理累加和问题。处理累加和问题。二、比较两种循环的区别:二、比较两种循环的区别:(1)do while while 先执行循环体,后判断条件。先执行循环体,后判断条件。(2)While 先判断条件,后执行循环体。先判断条件,后执行循环体。(

7、3)do while 最少执行次数是最少执行次数是1 while最不执行次数是最不执行次数是0#include main()int i,sum;sum=0;scanf(“%d”,&i);do sum=sum+I;i+;while(i=10)printf(“sum=%d”,sum);#include main()int i,sum;sum=0;scanf(“%d”,&i);while(i=100)sum=sum+I;i+;printf(“sum=%d”,sum);例例5.45.4求求fibonaccifibonacci数列,直到某项大于数列,直到某项大于10001000为止。为止。1)f=f1+

8、f2,f1=f2,f2=f1)f=f1+f2,f1=f2,f2=f2)2)判断判断f2f2是否大于是否大于100010003)3)循环结束,输出循环结束,输出f2f2的值的值.F3=1000f=f1+f2;,f1=f2;f2=f非非0f1=1,f2=1 1 1 2 3 5 8 13.5.3 for5.3 for语句构成的循环结构语句构成的循环结构一、一、forfor语句形式和执行过程:语句形式和执行过程:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3 3(没有分号)(没有分号))循环体;循环体;for(k=1;k=10;k+)printf(“for(k=1;k=10;k

9、+)printf(“*”);”);1)1)计算表达式计算表达式1 12)2)表达式表达式2 2,真:转,真:转3)3);假:转;假:转5)5)3)3)执行一次循环体执行一次循环体4)4)计算表达式计算表达式3 3;转;转2)2)5)5)结束循环,执行结束循环,执行forfor后面的语句。后面的语句。执行过程:执行过程:for(for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变量增值)语句语句;表达式表达式2语句语句为为0非非0表达式表达式1 1表达式表达式3for语句的流程图语句的流程图:对对for语句的详细说明:语句的详细说明:(1)”表达式表达式1”可以省略,但分号

10、不可以省略,在可以省略,但分号不可以省略,在for 语句前为语句前为变量赋初值。变量赋初值。例:例:i=0;for(;i100)break;(3)”表达式表达式3”可以省略,但要把其放到循环体去,否则可以省略,但要把其放到循环体去,否则for循环将无法正常结束。循环将无法正常结束。for(i=0;i100;)sum=sum+I;i+;(4)(4)把其它变量初值放到表达式,把循环体放到表达式,作用是一样的。把其它变量初值放到表达式,把循环体放到表达式,作用是一样的。for(sum=0,i=0;i=100,sum=sum+i,i+);例例5.5累加和累加和1+2+3+100?用用for循环来做。循

11、环来做。#include main()int I,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);for循环改成循环改成while语句语句:表达式表达式1;while(表达式表达式2)语句语句 表达式表达式3;例题例题:5.6:计算半径为:计算半径为0.5、1.5、5.5的圆面积。的圆面积。补充:求补充:求n!:1*2*3*nmain()int i;double s=1;scanf(“%d”,&n);for(i=1;i=n;i+)sum=sum*iprintf(“sum=%lf”,sum);注意:如果把注意:如果把s定义为定

12、义为int,结果为错。,结果为错。二、三种循环的区别和特点:二、三种循环的区别和特点:1、while和和do while的区别:的区别:(1)while当型循环:先判断,后执行循环体。当型循环:先判断,后执行循环体。do while直到型循环:先执行循环体,后判断。直到型循环:先执行循环体,后判断。(2)while最不执行次数是最不执行次数是0.do while 最少执行次数是最少执行次数是1.2、for和和while、do while的区别:的区别:(1)while和和do while在循环体之前赋初值。在循环体之前赋初值。for语句在表达式语句在表达式1中赋初值。中赋初值。(2)while

13、和和do while使循环趋向结束的语句在循环体内。使循环趋向结束的语句在循环体内。for语句位于表达式语句位于表达式3。3、共同点:、共同点:(1)三个循环解决同一类同题时条件相同。三个循环解决同一类同题时条件相同。(2)三个语句都必须有使循环结束的条件,否则成为死循环。三个语句都必须有使循环结束的条件,否则成为死循环。(3)Break和和continue语句在这三种语句中作用一样。语句在这三种语句中作用一样。上机中常考上机中常考for语句,笔试中常考语句,笔试中常考while和和do while语句。语句。5.4 5.4 循环结构的嵌套循环结构的嵌套概念:在一个循环体内又完整地包含了另一个

14、循环。概念:在一个循环体内又完整地包含了另一个循环。自己写自己写whilewhile和和do whiledo while嵌套的形式。嵌套的形式。例:例:for(i=0;i=10;i+)for(j=1;j=5;j+)*for(i=0;i3;i+)for(j=0;j=i;j+)printf(“*”);printf(“n”);一、有关图形的问题:一、有关图形的问题:补充例题:正直角三角形的输出:补充例题:正直角三角形的输出:(1)找变量找变量i来控制循环的行数来控制循环的行数。for(i=0;i3;i+)(2)找变量找变量j来控制每一行的每一列。来控制每一行的每一列。找出每列字符个数与行的关系。找出

15、每列字符个数与行的关系。*:j=i(当前行数当前行数)+1(执行次数执行次数)for(j=0;ji+1;j+)printf(“*”);列数列数=当前行数当前行数 for(j=0;j=i;j+)printf(“*”);(3)每行后要输出换行每行后要输出换行,printf(“n”).i=0;j=0;i=1;j=0,1;i=2;j=0,1,2;*补充例题:倒直角三角形的输出:补充例题:倒直角三角形的输出:(1)找变量找变量i来控制循环的行数。来控制循环的行数。for(i=0;i3;i+)(2)找变量找变量j来控制每一行的每一列来控制每一行的每一列。找出每列字符个数与行的关系。找出每列字符个数与行的关

16、系。*:j=3(总行数总行数)-i(当前行数当前行数).for(j=0;j3-i;j+)printf(“*”);列数总行数列数总行数+当前行数当前行数 for(j=0;j=3+1-i;j+)printf(“*”);(3)每行后要输出换行每行后要输出换行,printf(“n”).i=0;j=2,1,0;i=1;j=1,0;i=2;j=0;例例:5.7:5.7使用双层循环,打印星号组成的倒三角形。使用双层循环,打印星号组成的倒三角形。引申题:习题引申题:习题5.205.20*分析:倒等腰三角形的输出:分析:倒等腰三角形的输出:(1)找变量找变量i来控制循环的行数。来控制循环的行数。for(i=0;

17、i4;i+)(2)找变量找变量j,k来控制每一行的每一列来控制每一行的每一列。找出每列字符个数与行的关系。找出每列字符个数与行的关系。:for(j=1;j=i;j+)printf(“”);for(j=1;jI;j+)printf(“”);*:列数行数列数行数*2*当前行数当前行数-1 for(k=0;j7-i*2)printf(“*”);列数行数列数行数*2*当前行数当前行数 for(k=0;j=8-i*2)printf(“*”);(3)每行后要输出换行每行后要输出换行,printf(“n”).和和*的输出的输出;i=0;k=0,1,2,3,4,5,6;i=1;j=1 k=0,1,2,3,4;

18、i=2;j=1,2;k=0,1,2;i=3;j=1,2,3;k=0;二、有关素数的问题二、有关素数的问题(笔试和上机分数都比较多笔试和上机分数都比较多)1、素数的概念:除了、素数的概念:除了1和本身之外不能被任何数整除的数。和本身之外不能被任何数整除的数。2、素数的判断:从、素数的判断:从2开始到开始到x-1都不能被整除都不能被整除 从从2开始到开始到x/2都不能被整除都不能被整除 从从2开始到的平方根都不能被整除。开始到的平方根都不能被整除。补充例题:判断是不是素数。补充例题:判断是不是素数。main()int i,x,tag=0;scanf(“%d”,&x);for(i=2;ix;i+)i

19、f(x%i=0)tag=1;if(tag=0)printf(“YES”);else printf(“NO”);补充例题:输出所有三位补充例题:输出所有三位(100999)的素数。的素数。#include#include main()int i,x,tag=0,n=0;for(x=101,x=999;x+=2)for(i=2;i=sqrt(x);i+)if(x%i=0)tag=1;if(tag=0)printf(“%d”,x);n+;if(n%10=0)printf(“n”);例例:5.8:5.8找出找出2-1002-100以内的所有质数以内的所有质数(素数素数)。补充例题:求大于补充例题:求大

20、于m的的k个素数。个素数。(题库中的原题题库中的原题)#include#include main()int i,x,m,n=0,tag=0;scanf(“%d%d”,&m,&k);for(x=m+1;nk;x+)for(i=2;i=sqrt(x);i+)if(x%i=0);tag=1;if(tag=0)printf(“%d”,x);n+;补充例题:求小于补充例题:求小于m的最大的的最大的k个素数。个素数。#include main()int i,x,n=0,m,k,tag=0;scanf(“%d%d”,&m,&k);for(x=m-1;nk;x-)for(i=2;i=sqrt(x);i+)if

21、(x%i=0);tag=1;if(tag=0)printf(“%d”,x);n+;补充习题:累加前补充习题:累加前100个数的和个数的和(要求要求100+99+2+1),训练循环的灵活度。训练循环的灵活度。三、有关三、有关(斐波那斐波那)fibonacci)fibonacci数列的问题:数列的问题:#include main()long a,b,c,i;a=1;b=1;printf(“%ld%ld”,a,b);for(i=3;i=40;i+)c=a+b;a=b;b=c;printf(“%ld”,c);if(i%10=0)printf(“n”);上机题库中的原题,笔试中也经常出现。上机题库中的原

22、题,笔试中也经常出现。补充习题:补充习题:fibonacci数列用数列用f1,f2,f3的方法来做。的方法来做。注意:如果超出第注意:如果超出第24项,必须定义成长整型。项,必须定义成长整型。补充例题:输出补充例题:输出fibonacci数列的前数列的前40项。项。补充例题:扩展的斐波那补充例题:扩展的斐波那数列。数列。上机题库中的原题上机题库中的原题有一数列,前三项是有一数列,前三项是0,1,2,从第四项开始,从第四项开始,每一项都是前三项的和。输出这个数列。每一项都是前三项的和。输出这个数列。#include main()long a,b,c,d,i;a=0;b=1;c=2;printf(

23、“%ld%ld”,a,b,c);for(i=4;i=40;i+)d=a+b+c;a=b;b=c;c=d;printf(“%ld”,d);if(i%10=0)printf(“n”);例例5.11从输入的若个大于从输入的若个大于0的正整数中选出最大值,的正整数中选出最大值,用用-1结束结束例例5.12用迭代法求一个数的平方根。用迭代法求一个数的平方根。x0=x1 x1=(x0+x1+)/2.#include#include main()float a,x0,x1;printf(“ninput a:”);scanf(“%f”,&a);If(ale-6);prittf(“sqrt(%f)=%f”,a,

24、sqrt(a);补充习题补充习题:输入输入6 6名学生门课程的成绩,名学生门课程的成绩,分别统计出每个学生门课程的平均成绩分别统计出每个学生门课程的平均成绩分析分析:外层控制几名学生,外层控制几名学生,内层控制每个学生的平均成绩。内层控制每个学生的平均成绩。5.5 break和和continue在循环结构的作用在循环结构的作用一、一、break语句只能用于语句只能用于switch语句体中或者是语句体中或者是循环体中,其作用是使流程跳出循环体中,其作用是使流程跳出switch语句体语句体或循环体。或循环体。main()int I,s;s=0;for(i=1;i+)s=s+I;if(s5000)break;printf(“s=%d,i=%dn”,s,i);二、二、continue是结束本次循环,进入下一是结束本次循环,进入下一次循环条件的判断。次循环条件的判断。#include main()int k=0,s=0,I;for(i=1;i5)printf(“*i=%d,s=%d,k=%d,”,I,s,k,);countinue;k=k+s;printf(“i=%d.s=%d.l=%dn”,i,s,k);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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