C语言PPT课件第04章循环控制.ppt

上传人:牧羊曲112 文档编号:6503738 上传时间:2023-11-07 格式:PPT 页数:103 大小:713KB
返回 下载 相关 举报
C语言PPT课件第04章循环控制.ppt_第1页
第1页 / 共103页
C语言PPT课件第04章循环控制.ppt_第2页
第2页 / 共103页
C语言PPT课件第04章循环控制.ppt_第3页
第3页 / 共103页
C语言PPT课件第04章循环控制.ppt_第4页
第4页 / 共103页
C语言PPT课件第04章循环控制.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《C语言PPT课件第04章循环控制.ppt》由会员分享,可在线阅读,更多相关《C语言PPT课件第04章循环控制.ppt(103页珍藏版)》请在三一办公上搜索。

1、,循 环 控 制,共 20页 第 2 页,第4章 循 环 控 制,第一节 概述第二节 goto 语句第三节 while 语句第四节 do-while 语句第五节 for 语句第六节 循环的嵌套第七节 几种循环的比较第八节 break和continue 语句第九节 程序举例,共 20页 第 3 页,5-1 循环问题,循环在常中生活中经常遇到,?,上课问题:从第一周到十五周,每周 二上C语言课。这就是一个循环。即每逢周二,就上C。周二 C语言,如果=15周,共 20页 第 4 页,4-1循环语句,问题:C课是从哪一周开始,到哪周结束,也就是说循环是从哪里开始,到哪结束?整个过程为:S1:第一周开始

2、 S2:周二 S3:上C S4:下一周数=15 Y 转到S2 N 课程结束,共 20页 第 5 页,4-1循环语句,S1:第一周开始 S2:周二 S3:上C S4:下一周数=15 Y 转到S2 N 课程结束在这里,S1是循环的开始,S4是控制循环的结束,共 20页 第 6 页,4-1 循环,提出问题2,?,提问:从键盘上输入10个整数并求和,怎么编程?回答:在程序中写入10个scanf()语句。提问:从键盘上输入500个整数并求和,怎么编程?回答:这个,嗯?不会让我写500个.,老师:让我们换一个角度来看待这些问题,以上问题的实质是:将scanf函数重复执行N遍。学生:对!好象是 这么回事.老

3、师:我们可以引出一个概念“循环”,简单而言:循环就是不断反复地执行同一段程序。学生:这就是我们今天要学的新东西?,共 20页 第 7 页,今天要讲的是循环语句,基本语句,C程序的第六条语句:循环语句,共 20页 第 8 页,4-1循环语句,循环 反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。C语言中控制循环的语句:while do-while for 下面我们先讲 while 循环。举一个例子。,共 20页 第 9 页,4-1循环语句,例题1:从键盘上输入10个同学的分数,求平均成绩,怎么编程?分析:1、要有一个存放同学成绩的变量scod,有一个成绩累加的变量sum 还有一个平均

4、值变量aver 2、每个学生的成绩从键盘输入 3、总共要输入和累加十个学生的成绩,也就是要循 环十次,用一个变量K来表示。,共 20页 第 10 页,4-1循环语句,过程:S1:设scod为同学的成绩,sum为成绩的累加,aver为平均 值,K为循环次数控制值。S2:sum=0;表示累加数开始是零 S3:K=1;表示从第一位同学开始 S4:当(K=10)输入一个成绩scod;sum=sum+scod;累加 k=k+1;循环的次数增1 S5:aver=sum/10;,共 20页 第 11 页,4-1循环语句,编程如下:int scod,sum,aver,k;sum=0;/*表示累加数开始是零*/

5、k=1;/*表示从第一位同学开始*/while(k=10)scanf(“%d”,共 20页 第 12 页,4-1循环语句,例2 计算n+n+n+.+n、10个n求和,其算法如下:设SUM为累加数,K为计数器,n=2。S1:n=2;SUM=0(累计数开始为0)K=1(表示从第一个数开始)S2:当 K=10(计算10 个数)(否则转s4)s3:SUM=SUM+n(累加)K=K+1(累计下一个数)S4:打印SUM。,共 20页 第 13 页,4-1循环语句,int sum,k,n;n=2;sum=0;(累计数开始为0)k=1;(表示从第一个数开始)while(k=10)(计算10 个数)sum=su

6、m+n;(累加)k=k+1;(累计下一个数)printf(“n sum=%d”,sum);,共 20页 第 14 页,例3 计算1+2+3+.+10、10个整数求和,,其算法如下:设SUM为累加数,K为计数器。计算 设sum=0,k=1,1+2+3+4+5+6+7+8+9+10 sum=sum+1(+k)第一步 k=k+1 sum=sum+2(+k)k+sum=sum+3 Sum=sum+4 sum=sum+10,共 20页 第 15 页,4-1循环语句,例3 计算 设sum=0,k=1,1+2+3+4+5+6+7+8+9+10 sum=sum+1(+k)第一步 k=k+1 sum=sum+2

7、(+k)k+sum=sum+3 Sum=sum+4 sum=sum+10,共 20页 第 16 页,4-1循环语句,例3 计算1+2+3+.+10、10个整数求和,其算法如下:设SUM为累加数,K为计数器。S1:SUM=0(累计数开始为0)K=1(表示从第一个数开始)S2:当 K=10(计算10 个数)(否则转s4)s3:SUM=SUM+k(累加)K=K+1(累计下一个数)S4:打印SUM。,共 20页 第 17 页,4-1循环语句,int sum,k;sum=0;(累计数开始为0)k=1;(表示从第一个数开始)while(k=10)(计算10 个数)sum=sum+k;(累加)k=k+1;(

8、累计下一个数)printf(“n sum=%d”,sum);,共 20页 第 18 页,程序如下:main()从两个例子看,一个循 int k,sum;环必需有三个值来控制sum=0;k=1;初始值,循环从那里开始while(k=10)终止值,循环在那里结束 sum=sum+k;k=k+1;控制变量必需增值printf(“%d”,sum);,例:计算 1+2+3+4+5+6+7+8+9+10,共 20页 第 19 页,程序如下:main()从两个例子看,一个循 int k,sum;环必需有三个值来控制sum=0;k=1;初始值,循环从那里开始while(k=10)终止值,循环在那里结束 sum

9、=sum+k*(k+1);k=k+1;控制变量必需增值printf(“%d”,sum);,例:计算 1*2+2*3+3*4+.+10*11,共 20页 第 20 页,4-1循环语句,while 循环,称为当型循环。其格式为:while(条件)/*循环体*/.当条件满足时(即条件不为零),反复执行循环体。,共 20页 第 21 页,程序如下:main()从两个例子看,一个循 int k,sum;环必需有三个值来控制sum=0;k=1;初始值,循环从1开始while(k=99)终止值,循环在99结束 sum=sum+k;k=k+2;控制变量必需增值printf(“%d”,sum);,例:计算 1+

10、3+5+7+9+99,共 20页 第 22 页,程序如下:main()从两个例子看,一个循 int k,sum;环必需有三个值来控制sum=0;k=2;初始值,循环从2开始while(k=100)终止值,循环在100结束 sum=sum+k;k=k+2;控制变量必需增值printf(“%d”,sum);,例:计算 2+4+6+8+10+.+100,共 20页 第 23 页,程序如下:main()从两个例子看,一个循 int k,sum,t=1;环必需有三个值来控制sum=0;k=2;初始值,循环从2开始while(k=100)终止值,循环在100结束 sum=sum+t*k;k=k+2;t=-

11、1*t;控制变量必需增值printf(“%d”,sum);,例:计算 2-4+6-8+10-.-100,共 20页 第 24 页,程序如下:main()从两个例子看,一个循 int k,sum,t;环必需有三个值来控制sum=0;t=-1;k=100;初始值,循环从2开始while(k=2)终止值,循环在100结束 sum=sum+k*t;k=k-2;t=t*(-1);控制变量必需增值printf(“%d”,sum);,例:计算 2-4+6-8+10+.-100,共 20页 第 25 页,main()float j,sum;sum=0;j=1;while(j=100)sum=sum+1/j;j

12、=j+1;printf(“n j=%f,sum=%f”,j,sum),计算 1+1/2+1/3+1/4+.+1/99+1/100,共 20页 第 26 页,main()float j,sum;sum=0;j=1;while(j=100)sum=sum+1/j;j=j+1;printf(“n j=%f,sum=%f”,j,sum),计算 1+1/2+1/3+1/4+.+1/99+1/100,共 20页 第 27 页,main()float j,sum;j=1;sum=0;while(j=100)sum=sum+1/j;注意中间项的 j=j+1;计算 printf(“n j=%f,sum=%f”,

13、j,sum),计算 1+1/2+1/3+1/4+.+1/99+1/100,共 20页 第 28 页,main()int t;float j,sum;j=1;sum=0;t=1;while(j=100)sum=sum+t*1/j;j=j+1;t=(-1)*t;printf(“n j=%f,sum=%f”,j,sum),计算 1-1/2+1/3-1/4+.+1/99-1/100,共 20页 第 29 页,main()int t;float j,sum;j=1;sum=0;t=1;t中间项符号 while(j=100)sum=sum+t*1/j;j=j+1;t=t*(-1);中间项符号改变 prin

14、tf(“n j=%f,sum=%f”,j,sum),计算 1-1/2+1/3-1/4+.+1/99-1/100,共 20页 第 30 页,4-1 while语句-实例,while使用注意 1.while(0).由于循环的条件表达式恒等于0,循环体永远也不会执行,是编程者的错误。例:sum=0;k=1;初始值,循环从1开始while(0)条件为假,循环永远不会执行 sum=sum+k;k=k+2;,共 20页 第 31 页,4-1 while语句-实例,while使用注意 2.while(1).由于循环的条件表达式恒等于1,所以不可能通过循环控制条件来结束循环体的执行,称为“死循环”。例:sum

15、=0;k=1;初始值,循环从1开始while(1)条件永远为真,循环不会终止 sum=sum+k;k=k+2;,共 20页 第 32 页,4-1 while语句-实例,while使用注意3.为了保证循环正常运行,应该特别注意:循环控制条件 控制条件的初始状态(初始值)循环体内部对控制条件的影响k=1;初始值,循环从那里开始while(k=10)终止值,循环在那里结束 sum=sum+k;k=k+1;控制变量必需改变,共 20页 第 33 页,4-2while语句-实例,例:分析程序的运行结果#include main()int n=0;while(n3)printf(”n is%dn”,n);

16、printf(”Thats all this program does.n”);结果:程序将不停的打印“n is 0”,直至终止程序无法正常终止的程序,称为“死循环”。结论:在while语句循环体中,一定要有能够对循环控制条件产生影响的语句。避免出现“死循环”现象。,共 20页 第 34 页,4-1循环语句,do-while 循环,称为直到循环。其格式为:do/*循环体*/.while(条件);当条件满足时(即条件不为零),反复执行上面循环体。,共 20页 第 35 页,do-while型 while 型 main()main()int k,sum;int k,sum;sum=0;sum=0;

17、k=1;k=1;do while(k=7)sum=sum+k;sum=sum+k;k=k+1;k=k+1;while(k=7);pintf(“%d”,sum);printf(“%d”,sum);,例:计算 1+2+3+4+5+6+7,共 20页 第 36 页,4-1 do-while语句,例如用do-while 语句求 n.程序如下:main()int k,sum;sum=0;k=1;初始值,循环从1开始 do sum=sum+k;k=k+1;控制变量必需增值 while(k=100);终止值,循环在k=100结束 printf(“%d”,sum);,100,N=1,共 20页 第 37 页,

18、4-1 do-while语句,do-while语句特点 do-while与while的最大区别:do-while语句先执行循环体然后再判断循环控制条件,而while却是先判断条件之后再执行循环体。k=1;k=1;do while(k=7)sum=sum+k;sum=sum+k;k=k+1;k=k+1;while(k=7);pintf(“%d”,sum);,共 20页 第 38 页,4-1 do-while语句,do-while语句特点使用do-while构成的循环,循环体部分至少要执行一次;而采用while和for构成的循环,循环体部分有可能一次也不会执行。k=8;k=8;do while(k

19、=7)sum=sum+k;sum=sum+k;k=k+1;k=k+1;while(k=7);pintf(“%d”,k);执行一次,k=9 一次都不执行,共 20页 第 39 页,4-2 for语句,for结构也是一种当型循环。它把初始值;终止值;步长全放在for条件里。其格式为:for(初始值;终止值;步长)/*循环体*/.当初始值不超过终止值时,反复执行循环体。For循环与while循环可以互换。,共 20页 第 40 页,while型 for 型 main()main()int I,p;int I,p;p=0;I=1 p=0;while(I=7)for(I=1;I=7;I+)p=p+I;p

20、=p+I;i=i+1;printf(“%d”,p);printf(“%d”,p);,例:计算 1+2+3+4+5+6+7,共 20页 第 41 页,4-2 for语句,for语句的变化形式for语句中的三个表达式中的任意一个都是可以省略的,但是分号不能省略。1.可以将初始值放在外面:main()int I,p;p=0;I=1;for(;I=7;I+)p=p+I;分号不能省略。printf(“%d”,p);,共 20页 第 42 页,4-2 for语句,2.可以将表达式3放入循环体里,main()int I,p;p=0;for(I=1;I=7;)p=p+I;I=I+1;printf(“%d”,p

21、);,共 20页 第 43 页,4-2 for语句,3.省略表达式1和表达式3,则:for(;表达式2;)p=0;k=1;for(;k=7;)p=p+k;k=k+1;就等同于:while(表达式)据此结论:所有用while语句实现的循环都可以用for语句实现。,共 20页 第 44 页,4-2 for语句,4.表达式1、2、3全省略,则:for(;)就等同于:while(1)死循环。,共 20页 第 45 页,4-3 循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,内嵌的循环中还可以嵌套,这就是多层循环。三种循环(while,do-while,for)可以互相嵌套如:whil

22、e()for(;).while()while().,共 20页 第 46 页,4-3 典型非数值(图型)问题-例1,例1:打印边长为m的正方型要求:从键盘输入m值,输出m行每行m个*号。例:输入m=4,输出的图形如下:*算法分析与设计:1.输入 m,2.重复打印 m 行,每行打印 m 个*;加细:1.输入 m;2.for(k=1;k=m;k+)打印一行中的 m 个*;,共 20页 第 47 页,4-3 典型非数值(图型)问题-例1,加细:1.输入m;2.for(k=1;k=m;k+)打印 m 个*;换新行;加细:1.输入m;2.for(k=1;k=m;k+)for(j=1;j=m;j+)pri

23、ntf(”*”);printf(”n”);,共 20页 第 48 页,4-3 典型非数值(图型)问题-例1,整理,得到程序如下:#include main()int k,m,j;scanf(”%d”,j+)/*打印的m个*号*/printf(”*”);printf(”n”);,共 20页 第 49 页,4-3 循环语句小结,循环语句可以嵌套,循环可以并列,但不能交叉。对 对 错,共 20页 第 50 页,4-3循环语句小结,为了保证循环体正常运行,应该特别注意:循环控制条件 控制条件的初始状态(初始值)循环体内部对控制条件的影响以上三个方面相互配合,相互影响,共同完成循环控制,共 20页 第

24、51 页,4-3 转移语句,转移语句的作用 改变程序的运行流程。C语言转移语句 break continue goto return,共 20页 第 52 页,4-3 break语句,格式break;break语句的功能 1.在switch语句中结束case子句,使控制转到switch语句之外。2.在循环语句的循环体中使用,结束循环过程,使控制转移到整个循环语句之外的下一条语句处。,共 20页 第 53 页,4-3 break语句-实例,例:求素数,2,3,5,7,9,11,25 整数n?素数,用k=2 n/2的数除n,如果所有的k都有 n%k!=0,则 n是素数。main()int k,n,

25、flag;scanf(“%d”,共 20页 第 54 页,4-3 break语句-实例,例:计算圆的面积,面积大于100结束。#define PI 3.1416 main()int r;float area;for(r=1;r100)break;/*控制退出循环*/printf(“%f“,area);,共 20页 第 55 页,4-3 break语句-实例,break语句使用注意:1、在嵌套循环中,break语句仅能退出一层(当前)循环。2、若在循环语句中包含了switch语句,那么switch语句中的break语句仅能使控制退出switch语句。3、break语句并不是程序设计中必不可少的语

26、句,可以通过改变程序的结构去掉。4、break语句不能用于循环语句和switch语句之外的任何其它语句中。,共 20页 第 56 页,4-3 continue语句,continue语句格式continue;continue语句的功能 continue语句仅能在循环语句中使用.它的作用不是结束循环,而是开始一次新的循环。对于for语句,将控制转到执行表达式3和条件测试部分 对于while和do-while语句,将控制转到条件测试部分 从逻辑上讲,改变if语句的条件表达式所表示的条件,就可以不需要使用continue语句。,共 20页 第 57 页,4-3 continue语句-实例,把10020

27、0之间的不能被3整除的数输出。main()int n;for(n=100;n=200;n+)if(n%3=0)continue;/*结束本次循环,不进行后续 的printf操作*/printf(“%d”,n);,例C3_6201,改变if语句的条件表达式,可以不需要使用continue。,共 20页 第 58 页,4-3 goto语句,goto语句格式goto 标号;goto语句的功能1、将控制转移到标号所指定的语句处继续执行。2、标号的唯一功能就是作为goto语句的目标。标号的作用域是它所在的整个函数。goto语句的使用说明在C语言中,goto语句并不是必不可少的,使用goto语句的地方都可

28、以用C的其他控制流程语句改写。,共 20页 第 59 页,lol,把100200之间的不能被3整除的数输出。main()int n;loop:for(n=100;n=200;n+)if(n%3=0)goto loop;/*转移到loop:标号处*/printf(“%d”,n);,例C3_6201,共 20页 第 60 页,4-3 return语句,retunrn语句格式格式一:return;格式二:return(表达式);return语句的功能 1.return语句使程序从被调用函数中返回到调用函数的调用处继续运行。2.如果return后跟一表达式,则该表达式的值会从被调用函数中带回到调用它的

29、函数,称为返回值。,共 20页 第 61 页,4-4 do-while语句-实例,例4-12:求非线性方程 x=1+arctanx=0的一个实根。取初值Xo=1.0,精度要求eps=0.000001.并改写成如下迭代格式:Xn+1=1+arctanXn算法分析:令:Xo=X=1.0,将Xo反复代入方程:X=1+arctan(Xo)如果|X-Xo|=0.000001,则X是方程的根。否则又令 Xo=X,继续代入方程。,共 20页 第 62 页,4-4 do-while语句-实例,#include“math.h”Main()double x=1.0,eps=0.000001,xo;do xo=x;

30、x=1.0+arctan(xo);while(fabs(x-xo)=eps);printf(“x=%11.fn”,x);,共 20页 第 63 页,4-4 do-while语句-实例,例C3_5301.C:输入一个正整数,要求以相反的顺序输出该数。例如:输入12345,则输出为54321。基本思路:可以从个位开始,按位输出整数的每一位 main()unsigned int number;printf(Input the number:);scanf(%d,例C3_5301,思考:使用while或for语句,如何实现?,例C3_53011,两个程序有何区别?,前面的程序可以处理数字0,后面的程序

31、不能处理,共 20页 第 64 页,4-4 do-while语句-实例,例C3_5301.C:输入一个正整数,要求以相反的顺序输出该数。例如:输入12345,则输出为54321。基本思路:分别把各位取出来。a=n/10000;b=n%10000/1000;c=n%1000/100;d=n%100/10;e=n%10;,例C3_5301,思考:使用while或for语句,如何实现?,例C3_53011,两个程序有何区别?,前面的程序可以处理数字0,后面的程序不能处理,共 20页 第 65 页,6-8 continue语句-实例,例C3_6201.C:输入10个整数,求其中正数的个数及平均值,精确

32、到小数点后两位。main()int i,count=0,j,sum=0;for(i=1;i=10;i+)printf(Input integer:);scanf(%d,例C3_6201,改变if语句的条件表达式,可以不需要使用continue。,共 20页 第 66 页,3-7-3 典型非数值(图型)问题-例2,例3:从键盘输入h值,输出h行用*号组成等腰三角形。例:输入 h=4,输出的图形如下:*,1*2*3*4*,要输出 h-k 个 空格 和 2k-1 个*,分析:程序的关键是:找出每一行中输出空格的数量和*的数量 对于第k行(1=k=h):,共 20页 第 67 页,3-7-3 典型非数

33、值(图型)问题-例2,分析:要输出 h-k 个 空格 和 2k-1 个*算法设计1.输入 h;2.重复打印h行,每行h-k个空格和2k-1个*加细:2.for(k=1;k=h;k+)/*h行*/重复打印 h-k 个空格;重复打印 2k-1 个*;换行;,共 20页 第 68 页,3-7-3 典型非数值(图型)问题-例2,程序:#include main()int h,k,j;scanf(”%d”,例C3_7302,共 20页 第 69 页,3-7-3 典型非数值(图型)问题-例2,*h=4换一个思路分析:对于第 k 行(1=k=h):要输出 h+k-1 个 空格 或*号 对于第j个字符,若 j

34、=h-k 输出 空格 若 j h+k-1 输出*算法设计 for(k=1;k=h;k+)/*重复打印h行*/for(j=1;j=h+k-1;j+)if(j=h-k)打印 空格;else 打印*号;换行;,共 20页 第 70 页,3-7-3 典型非数值(图型)问题-例2,程序:#include main()int h,k,j;scanf(”%d”,例C3_73021,共 20页 第 71 页,3-7-3 典型非数值(图型)问题-例3,例3:从键盘输入 h 值,输出 h 行用*号组成的菱形。例:输入 h=4,输出的图形如下:*,分析:1.h为上三角形的高度,总行数为。2.对于第 j 行,要输出

35、m 个空格和 n 个*号。3.当 j=h 时,为上三角,则:m=,n=4.当 时,为下三角,则:m=n=总宽度-空格,1234567,空格 3*号 1 2 3 1 5 0 7 1 5 2 3 3 1,2h-1 h-j 2j-1 hj=2h-1 j-h=2h-1-2(j-h)=4h-1-2j,共 20页 第 72 页,3-7-3 典型非数值(图型)问题-例3,算法设计for(j=1;j=2*h-1;j+)控制打印行 若 为上三角 j=h 则:m=h-j;n=2j-1 否则:m=j-h;n=4h-1-2j 重复打印 m 个空格 重复打印 n 个*;换行;加细循环体 if(j=h)m=h-j;n=2

36、*j-1;else m=j-h;n=4*h-1-2*j;for(k=1;k=m;k+)printf();for(k=1;k=n;k+)printf(*);printf(n);,共 20页 第 73 页,3-7-3 典型非数值(图型)问题-例3,程序:#include main()int h,k,j,m,n;printf(Enter H:);scanf(%d,例C3_7303,共 20页 第 74 页,4-4for语句-实例,例:用逗号运算输出下列字符串。a z b y c x d w e v f u g t h s i r j q k p l o m n 分析:奇数位上的字符从a开始逐次递增,

37、偶数位上的字符从z开始逐次递减#include main()char i,j;/*i:奇位字符 j:偶位字符*/*i从a开始逐次递增,j从z开始逐次递减*/for(i=a,j=z;ij;i+,j-)printf(”%c%c”,i,j);/*输出两个字符*/printf(n);,例C3_5205,共 20页 第 75 页,6-8 break语句-实例,例:求555555的约数中最大的三位数是多少?main()int j;long n;printf(Please input number:);scanf(%ld,/*控制退出循环*/,共 20页 第 76 页,6-3 while语句,while语句

38、格式while(表达式)语句;说明:语句部分可以是简单语句,也可以是复合语句。while语句的执行流程,共 20页 第 77 页,4-1 while语句-实例,例:从键盘输入10个整数,求这10个整数的和。#include main()int count,num,total;/*count:计数器,num:输入的整数*/count=0;total=0;/*total:存放累加和*/while(count10)/*循环控制条件*/count+;/*循环体*/printf(Enter the No.%d=,count);scanf(%d,例C_5101,共 20页 第 78 页,4-3 循环嵌套,

39、例4-3:求4x4矩阵元素之和 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4算法分析与设计:1.设行数为 m,2.计算 m 行,第一行是 m 个1相加,第二行是 m 个2相加,第 m行是 m 个 m 相加,,共 20页 第 79 页,4-3 循环嵌套,加细:1.输入m;2.for(k=1;k=m;k+)计算每行之和;加细:1.输入m;sum=0;2.for(k=1;k=m;k+)for(j=1;j=m;j+)sum=sum+k;,共 20页 第 80 页,4-3 循环嵌套,整理,得到程序如下:#include main()int k,m,j,sum;scanf(”%d”,j+

40、)/*计算每一行之和*/sum=sum+k;分析方法逐步求精法。对于复杂问题,不可能一下得到程序,可以先将简单的部分明确出来,再逐步对复杂部分进行细化,一步一步推出程序。,共 20页 第 81 页,这是10个自然数相加,如何用循环来编程?分析程序,题意实际上是第一个数1,连续加上9个自然数,每加一次,加数就增加1。反复相加十次。即设被加数为SUM,开始时,SUM 为0,则第一次相加为:SUM=SUM+1 第二次相加为:SUM=SUM+2.第十次相加为:SUM=SUM+10,例:计算 1+2+3+4+5+6+7+8+9+10,共 20页 第 82 页,程序如下:main()从两个例子看,一个循

41、int k,sum;环必需有三个值来控制sum=0;k=1;初始值,循环从那里开始while(k=10)终止值,循环在那里结束 sum=sum+k;k=k+1;控制变量必需增值printf(“%d”,sum);,例:计算 1+2+3+4+5+6+7+8+9+10,共 20页 第 83 页,程序如下:main()从两个例子看,一个循 int k,sum,t;环必需有三个值来控制sum=1;k=1;t=5;初始值,循环从那里开始while(k=10)终止值,循环在那里结束 sum=sum*t;k=k+1;控制变量必需增值printf(“%d”,sum);,例:计算 1*2*3*4*10,共 20页

42、 第 84 页,N本身乘n次。S=n*n*.nS=1;For(k=1;k=n;k+)s=s*n;S1:s=nS2:s=n*n s=s*n n乘上前面的结果S3:s=n*n*n s=s*nS4:s=n*n*n*n s=s*nSn s=s*n,计算 n*n.*n(k个n相乖),共 20页 第 85 页,main()int I,k,n;long s;s=1;scanf(“%d%d”,printf(“n j=%f,sum=%f”,j,sum),计算 n*n.*n(k个n相乖),共 20页 第 86 页,#include“math.h”main()int I,j,n;long s,m;s=0;scanf

43、(“%d”,printf(“n j=%f,sum=%f”,j,sum),计算 1*1+2*2+3*3*3+4*4*4*4n*n.n,共 20页 第 87 页,#include“math.h”main()int I,j,n;long s,m;s=0;scanf(“%d”,s=s+m printf(“n j=%f,sum=%f”,j,sum),计算 1*1+2*2+3*3*3+4*4*4*4n*n.n,共 20页 第 88 页,#include“math.h”main()int I,j,n;long s,m;s=0;scanf(“%d”,printf(“n j=%f,sum=%f”,j,sum),

44、计算 1*1+2*2+3*3*3+4*4*4*4n*n.n,共 20页 第 89 页,main()int I,j,a,b,c,d;for(I=7;I=9999;I=I+7)a=I/1000;b=I%1000/100;b=I%100/10;d=I%10;if(a=5|b=5|c=5|d=5)printf(“n i=%d,”,i),计算 k19999 k%7=0 j%5=0 1234,共 20页 第 90 页,#include“stdio.h”main()int a=0,b=0,c=0,d=0,i;char c1;c1=getchar();While(1)if(c1=a printf(“n i=%

45、d,”,i),计算 c1abcdUTW1345+_*,共 20页 第 91 页,#include“stdio.h”main()int a=0,b=0,c=0,d=0;char c1;c1=getchar();while(c1!=n)if(c1=a printf(“n i=%d,”,i),计算 cabcdUTW1345+_*,共 20页 第 92 页,main()int I=1,t=1;float y=1,pi=0;while(y=1e-5)y=1.0/(2*I-1);pi=pi+y*t;t=-t;I+;printf(“n pi=%f,”,pi*4),计算 pi/4=1-1/3+1/5-1/7+

46、。y1E-5,共 20页 第 93 页,main()int I=1,t=1;float y,pi=0;for(i=1;y1e-5;I+)y=1.0/(2*I-1)pi=pi+y*t;t=-t;printf(“n pi=%f,”,pi*4),计算 pi/4=1-1/3+1/5-1/7+。y1E-5,共 20页 第 94 页,main()int m,a,b,c;for(m=100;m=999;m+)a=m/100;b=m%100/10;c=m%10;if(m=a*a*a+b*b*b+c*c*c)printf(“n%d=%d*%d*%d+%d*%d*%d+%d*%d*%d”,m,a,a,a,b,b,

47、b,c,c,c);,计算 水仙花数,如153=1*1*1+5*5*5+3*3*3,共 20页 第 95 页,main()int m;for(m=1;m+)if(m*m1000)break;printf(“n%d”,m);,计算 1000平方数500 的自然数,共 20页 第 96 页,main()int x,y,z;for(x=0;x9;x+)for(y=0;y12;y+)z=36-x-y;if(4*x+3*y+z/2.0=36)printf(“n x=%d,y=%d,z=%d”,x,y,z);,求男子 x、女子 y、小孩 z 人数。,共 20页 第 97 页,main()int m,n,k,

48、t;scanf(“%d%d”,求m、n的最小公倍数k。M=7,n=5,k=35,共 20页 第 98 页,5-1 循环问题,循环问题2,?,点名问题:从第一排第一个同学开始点名,点到最后100位停止。来的打O,不来的打X。平时的作法是:1、第一位同学开始 2、来了 记O 3、否则记X,共 20页 第 99 页,5-1 循环问题,4、第二位同学 5、来了 记O 6、否则记X 一直到298、第一百位同学299、来了 记O300、否则记X 总共要做1、2、3步一百次。,共 20页 第 100 页,5-1 循环问题,用计算机来做,可以省第2,3步99次写法。S1、第一位同学开始 S2、来了 记O S3

49、、否则记X S4、轮到下一个同学,是否第101位?S5、否,转到S2,继续做S2、S3、S4、S5。S6、是,结束。这就叫循环。,共 20页 第 101 页,4-1循环语句,例4-1 从键盘上输入10个整数并求和,其算法如下:设X为要输入的数,SUM为累加数,K为计数器。S1:SUM=0(累计数开始为0)K=1(表示从第一个数开始)S2:当 K=10(计算10 个数)S3:输入整数 X(继续输入)SUM=SUM+X(累加)K=K+1(累计下一个数)S4:否则打印SUM。,共 20页 第 102 页,4-1循环语句,Int sum,k,x;sum=0;(累计数开始为0)k=1;(表示从第一个数开始)while(k=10)(计算10 个数)scanf(“%d”,x);(继续输入)sum=sum+x;(累加)k=k+1;(累计下一个数)printf(),共 20页 第 103 页,4-1循环语句,用C编程如下:设X为要输入的数,SUM为累加数,K为计数器。Main()int x,k,sum;k=1;sum=0;while(k=10)*while()当型循环*scanf(“%d”,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号