C语言程序设计 第4章 循环结构程序设计.ppt_第1页
C语言程序设计 第4章 循环结构程序设计.ppt_第2页
C语言程序设计 第4章 循环结构程序设计.ppt_第3页
C语言程序设计 第4章 循环结构程序设计.ppt_第4页
C语言程序设计 第4章 循环结构程序设计.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章,循环结构程序设计,下一页,返 回,while语句、do-while语句、 for语句、continue语句、 break语句、循环的嵌套循,本章要点,应重点掌握三种循环语句的语法格式及执 行过程,并在此基础上理解循环嵌套的应 用,要多读程序,理解编程思想,并多上 机练习。,学习方法建议,返 回,上一页,本章内容,4.1 while语句 4.2do-while语句 4.3 for语句 4.4 循环的嵌套 4.5 break语句和continue语句 4.6 循环结构应用举例 4.7 本章小结,4.1 while语句,一般形式如下: while(表达式) 语句,下一页,返 回,先判断表达式

2、,后执行语句。,例4_1b】 求1+2+100,#include stdio.h,main( ), int i=1,sum=0;,while(i=100),sum=sum+i; i+;,printf(“sum=%dn,sum);,【例4.2b】求n!,n由键盘输入,#include stdio.h,main( ),int i=1,n,s=1;,scanf(%d,while(i=n), s*=i;i+;,printf(%d!=%dn,n,s);,上一页,下一页,返 回,【例4.3】统计学生某门课的平均分,#include stdio.h,main( ),int x,s=0,k=1,n;,floa

3、t v;,scanf(“%d”,while(k=n), printf(“输入第%d名学生成绩=”,k);,scanf(“%d”,s=s+x;,k=k+1;,v=1.0*s/n;,printf(“v=%fn”,v);,一般形式为 do 语句 while(表达式);,上一页,下一页,返 回,4.2 do-while语句,先执行,后判断,【例4_3b】求1+2+100,。,sum=5050,#include stdio.h,main( ), int i=1,sum=0;,do,sum=sum+i; i+;,while(i=100);,printf(“sum=%dn,sum);,上一页,下一页,返 回

4、,。,【例4.4】输入若干名学生成绩,当输入一个负数时结束,求平均分。,#include stdio.h,main( ),int x,s=0,k=0;,float v;,scanf(“%d”,do,scanf(“%d”, s=s+x;,k=k+1;, while(x=0);,v=1.0*s/k;,printf(“v=%fn”,v);,上一页,下一页,返 回,。,【例4.5】计算s=1+1/22+1/32+1/42+.直到某项的值小于0.510-4为止。,#include stdio.h,main( ),float i=2,t,s=1;,do,i+;, t=1/(i*i);,s=s+t;, wh

5、ile(t0.5e-4);,printf(“s=%fn”,s);,上一页,下一页,返 回,4.3 for语句,一般形式为: for(表达式1;表达式2;表达式3) 语句,for语句最简单的应用形式也就是最易理解的如下形式: for(循环变量赋初值;循环条件;循环变量增值) 语句,【例4_5b】求1+2+100序,sum=5050,#include stdio.h,main( ), int i=1,sum=0;,for(i=1;i=100;i+),sum=sum+i;,printf(“sum=%dn,sum);,说明: 有时根据需要可以将for语句中的部分或所有表达式省略,省略“表达式1”时,应

6、在for语句之前给循环变量赋初值。省略“表达式2”时,在循环体中通常要有能使循环结束的语句,否则就成了无限循环了。省略“表达式3”时,通常在循环体中要有使循环变量增值的语句。不管省略几个表达式,分隔符分号“;”是不能省的。,上一页,下一页,返 回,4.4 循环的嵌套,三种循环(while循环,do-while循环和for循环) 即可以自身嵌套,也可以互相嵌套。,【例4_6】 用一元纸币换五分、 两分及一分的硬币,要求换 到的硬币总数为50枚,问有 多少种换法?每种换法中各 种硬币分别是多少?,#include stdio.h,main( ),int x,y,z;,for(x=0;x=20;x+

7、),for(y=0;y=50;y+),z=50-x-y;,if(5*x+2*y +z=100),printf(%3dt%3dt%3dn,x,y,z);,【例4_6b】编写程序,输出下列图形,上一页,下一页,返 回,#include stdio.h,main( ),int i,j,k;,for(i=1;i=5;i+), for(j=1;j=6-i;j+),printf( );,for(k=1;k=2*i-1;k+),printf(*);,printf(n);,说明: 本程序用双重循环实现,外循环控制行数,内循环控制每行的内容,每行内容均包括三部分,行前空格、一行*、换行。行前空格和每行的*的输出

8、均用内嵌的循环实现。,上一页,下一页,返 回,4.5 break语句和 continue语句,4.5.1 break语句,一般形式为:break;,作用:退出包含break语句的那层循环,一般和if语句连用。,【例4_7b】判断正整数m是否素 数,m由键盘输入。,【编程思路】 用m依次除以2m-1之间的所有数,若都不能除尽,则m是素数,否则就不是素数。,17 17 is a prime number,#include stdio.h,main( ),int m,i;,scanf(%d,for(i=2;i=m-1;i+),if(m%i=0) break;,if(i=m),printf(%d is

9、 a prime numbern,m);,else,printf(%d is not a prime numbern,m);,上一页,下一页,返 回,4.5.2 continue语句,一般形式为: continue;,作用:结束本次循环,再去判断是否继续下次循环。,【例4_8b】计算100之内能被 7或9整除的所有整数之和。,说明:在while语句和do-while语句中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。在for循环中,遇到continue后,流程跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,

10、最后根据“表达式2”的值来决定for语句是否执行。,#include stdio.h,main( ),int i,sum=0;,for(i=1;i=100;i+), if(i%7!=0,sum=sum+i;,printf(“sum=%d”,sum);,4.6 循环结构应用举例,【例4_9b】输出九九表,格式如下:,上一页,下一页,返 回,【编程思路】 (1)用双重循环实现,外循环控制行数,内循环控制列数。 (2)定义变量i表示行数,作外循环的循环控制变量,使其从1到9递增。 (3)定义j表示列数,作内循环的循环控制变量,从1到i递增。,说明:由于外循环变量i表示行数(1到9),内循环变量j表示

11、列数(1到i),故每一个位置输出的数据应为行号和列号的乘积。,#include stdio.h,main( ),int i,j;,for(i=1;i10;i+),for(j=1;j=i;j+),printf(%d*%d=%-4d,j,i,i*j);,printf(n);,【例4_10b】用/41- + - +公式求的近似值,直到最后一项的绝对值小于10-6为止。,上一页,下一页,返 回,#include stdio.h,#include math.h,main( ), int s;,float n,t,pi;,t=1;pi=0;n=1;s=1;,while(fabs(t)=1e-6), pi=

12、pi+t;,n=n+2;,s = -s;,t=s/n;,pi=pi*4;,printf(pi=%10.6fn,pi);,上一页,下一页,返 回,【例4_11b】求100200间的全部素数,每行输出10个。,#include stdio.h,#include math.h,main( ), int m,k,i,n=0;,for(m=101;m=200;m=m+2),k=sqrt(m);,for(i=2;i=k;i+),if(m%i=0)break;,if(i=k+1) printf(%d ,m);,n=n+1; ,if(n%10=0) printf(n);,printf(n);,【例4.12b】

13、求Fibonacci数列前20项,这个数列有如下的特点:第1,2两个数为1,1。从第3个数开始,每一个数都是其前面两个数之和。即: f1=1 f2=1 fn=fn-1+fn-2 (n3),上一页,下一页,返 回,【编程思路】 (1)本题属于递推问题。即不断地用旧值推算出新值,在程序中表现为不断地用新值取代旧值的过程。 (2)定义循环变量n,用来表示数列的项,由于前两项已经给出,所以n从3开始。 (3)定义变量f1、f2、fn,每次计算完通项后,那么在计算下一项时,原来的f2就成为新的f1,刚计算出的fn就成为新的f2。 (4)为了更清晰地输出数列,每行输出4个数。,#include stdio.h,main( ),int f1=1,f2=1,n,fn;,printf(%12d%12d,f1,f2);,for(n=3;n=20;n+),fn=f1+f2; f1=f2; f2=fn;,printf(%12d,fn);,if(n%5=0) printf(n);,上一页,下一页,返 回,1、计算sum=1/2+3/4+5/6+19/20 2、计算sum=1-1/3+1/5-1/7+1/19 3、计算sum=1+2+22+23+210 4、计算sum=1+2!+3!+4!+8! 5、计算sum=1+x+x2/2!+x3/3!+直到某项的绝对值小于0.00

温馨提示

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

最新文档

评论

0/150

提交评论