C语言程序设计PPT教学课件第五章 循环结构程序设计_第1页
C语言程序设计PPT教学课件第五章 循环结构程序设计_第2页
C语言程序设计PPT教学课件第五章 循环结构程序设计_第3页
C语言程序设计PPT教学课件第五章 循环结构程序设计_第4页
C语言程序设计PPT教学课件第五章 循环结构程序设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、复习 选择程序设计 if (表达式1) 语句1 else if (表达式2) 语句2; else 语句3; 条件 简单条件通常是两个数据的大小关系。 复杂条件通常是简单条件的与、或、非关系。 切记:切记:1=x=1 c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar(c5); printf(“密码是%c %c %c %c %cn”,c1,c2,c3,c4,c5); 输入”china” cn=cn+4 输出 84页第6 第五章第五章 循环结构程序设计循环结构程

2、序设计 分析与设计分析与设计 语言描述语言描述 分析执行过程分析执行过程 问题 算法 程序 计算机 生活中经常遇到需要重复处理的问题 输入全班50个同学的成绩、统计全班50个同学的平均成绩 检查30个同学的成绩是否合格 5.1 为什么需要循环结构为什么需要循环结构 循环结构的特点循环结构的特点 程序的流程是在给程序的流程是在给 定条件时,反复执定条件时,反复执 行某个程序段。行某个程序段。 开始开始 循环变量循环变量= =初值初值 循环变量循环变量 终终 值值 执行循环体执行循环体 循环变量循环变量= =循环变量循环变量+ +步长步长 结束结束 yesyes no 循环结构中的两个概念循环结构

3、中的两个概念 循环体循环体 循环条件循环条件 什么是循环结构什么是循环结构 如何实现循环结构如何实现循环结构 5.2 5.2 用用whilewhile语句实现循环语句实现循环 执行过程执行过程 (1 1)先计算表达式的值)先计算表达式的值 ; (2 2)表达式的值为真)表达式的值为真( (非非0)0) 时执行循环体中的语句;时执行循环体中的语句; (3 3)重复上面步骤。)重复上面步骤。 (4 4)表达式的值为假)表达式的值为假(0) (0) ,则,则 结束循环。结束循环。 while (表达式表达式) 语句语句 可以是逻辑表达式、关系表达式、可以是逻辑表达式、关系表达式、 算数表达式(非算数

4、表达式(非0 0为真,为真,0 0为假)。为假)。 while (3)while (3)和和while (0) while (0) 从程序设从程序设 计的角度上说不合理,但是合法的。计的角度上说不合理,但是合法的。 例如:例如: while (3) 表示无限循环表示无限循环 while (0) 表示不进入循环体表示不进入循环体 一一. .用用whilewhile语句实现循环语句实现循环 例例1 1:任意输入十个数:任意输入十个数, ,求它们的和求它们的和. . main() int i=0; float s=0,x; while (i10) scanf(“%f”, s=s+x; i+; pri

5、ntf(“s=%fn”,s); while(i100) 例例3 3:输入一串字符,求字符个数。:输入一串字符,求字符个数。 main() char i; int n=0; i=; while(i!=n) scanf(“%c”, n=n+1; printf(“n=%d”,n); 例例2 2:求:求1+2+3+.+1001+2+3+.+100的和。的和。 main() int i,sum; i=1;sum=0; while(i=100) sum=sum+i; i=i+1; printf(“sum=%d”,sum); while(i100) 例例4 4:计算:计算1010! main() int i

6、=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); 例题例题5:找出任意输入的十个数中最大的一个。:找出任意输入的十个数中最大的一个。 main() float x;int n; scanf(“%f”, n=1; while(n10) scanf(“%f”, n=n+1; if(xy) x=y; printf(“the max data is%f”,x); 5.3 5.3 用用dowhiledowhile语句实现循环语句实现循环 一般形式一般形式 分号不能少 do 语句语句 while(表达式);表达式); 执行过程执

7、行过程 先执行循环体中的语句;先执行循环体中的语句; 测试循环条件,为真测试循环条件,为真(非非0) 则重复上面步骤,为假则重复上面步骤,为假(0) 结束循环。结束循环。 例:将上面计算例:将上面计算1010!并输出结果的程序用!并输出结果的程序用do-whiledo-while语句写出:语句写出: main() int i=1; long int t=1; while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); main() int i=1; long int t=1; do t=t*i; i+; while (i=10); printf(“10!=%ld

8、n”,t); 我们将我们将while和和do-while循环做一下比较循环做一下比较: main() int i; long t=1; scanf(“%d”, while (i=10) t=t*i; i+; printf(“%ldn”,t); main() int i; long t=1; scanf(“%d”, do t=t*i; i+; while (i=10); printf(“%ldn”,t); 输入:9 输出:90 输入:11 输出:1 输入:9 输出:90 输入:11 输出:11 while语句进入循环体语句进入循环体 之前,测试循环条件,之前,测试循环条件, 表达式必须为真,否表

9、达式必须为真,否 则则while循环不进入循循环不进入循 环体,即环体,即循环体可能循环体可能 一次也不执行一次也不执行。 do-while语句不管开始的时语句不管开始的时 候测试循环条件是真是假,候测试循环条件是真是假, 循环体都要执行一次,因循环体都要执行一次,因 为循环体是先于测试条件为循环体是先于测试条件 执行的。执行的。 main() int i,s; i=1;s=0; while(i=100) s=s+i; i=i+1; printf(“sum=%d”,s); 5.4 5.4 用用forfor语句实现循环语句实现循环 不能省略不能省略不能省略不能省略 一般形式:一般形式: for(

10、for(表达式表达式1 1 ;表达式;表达式2 2;表达式;表达式3) 3) 语句语句 例题例题1:求:求1+2+3+.+100的和。的和。 main() int i,s=0; for (i=1;i=100;i+) s=s+i; printf(“s=%d”,s); 执行过程:执行过程: 求出表达式求出表达式1的值;的值; 对对“表达式表达式2”进行判断,若条件为真执行循环体;进行判断,若条件为真执行循环体; 求解求解“表达式表达式3”; 转回(转回(2)继续执行;)继续执行; 循环结束,执行循环结束,执行for下面的语句。下面的语句。 main() int i=1; long int t=1;

11、 while (i=10) t=t*i; i+; printf(“10!=%ldn”,t); 例例2 2:将上面计算:将上面计算1010!的程序用!的程序用 forfor语句写出:语句写出: main() int i; long t; t=1; for(i=1; i=10; i+) t=t*i; printf(“10!=%ldn”,t); 说明说明: 表达式表达式1 1:进入循环体之前给某些变量赋初值。若省:进入循环体之前给某些变量赋初值。若省 略,可在略,可在forfor语句前给变量赋初值。语句前给变量赋初值。 main() int i=1; long sum=1; for( ; i=10;

12、 i+) sum=sum*i; printf(“10!=%ldn”,sum); for for 循环的三个表达式起着不同的作用,根据需要可以省略。循环的三个表达式起着不同的作用,根据需要可以省略。 表达式表达式2:决定循环的条件,若省略,则为无限循环。:决定循环的条件,若省略,则为无限循环。 如:如: for(i0; ;i+) 语句语句表达式表达式3 3:用于循环一次后对某些变量进行修改。若:用于循环一次后对某些变量进行修改。若 省略,可在循环体内对变量进行修改省略,可在循环体内对变量进行修改 main() int i; long sum=1; for(i=1 ; i=10 ; ) sum=s

13、um*i; i+; printf(“10!=%ldn”,sum); for 语句最为灵活,它完全可以代替的语句最为灵活,它完全可以代替的while语句。语句。 如:如:i=1; while(i=10) sum=sum*i; i+; 等效于 for(i=1;ib,则两个数的最大公,则两个数的最大公 约数一定在约数一定在1,b之间。之间。 设置一个循环变量设置一个循环变量i,使其从,使其从1增加到增加到b,依此测试变,依此测试变 量量i能否同时整除整数能否同时整除整数a和和b。如果能,则把。如果能,则把i的值放的值放 到一个变量到一个变量s中。循环结束时,中。循环结束时,s中保留的值就是所中保留的

14、值就是所 要的结果。要的结果。 第一个公约数就是最大公约数,因此在找到第一个公第一个公约数就是最大公约数,因此在找到第一个公 约数之后,应该强行终止循环。约数之后,应该强行终止循环。 使用使用break语句,可以强行终止语句,可以强行终止break语句所在的循环。语句所在的循环。 main() int a,b,i; scanf(“%d%d”, if (a=1; i-) if(a%i=0 printf(“%dn”,i); 7 9 8 4 算法思想:穷举法 素数就是能够被1和其自身整除的自然数。 设置一个循环变量i,使其从2变化到m-1,在循环体内 测试每一个i的值,看能否整除m,只要有一个i能被

15、m 整除,说明m不是素数,强行终止循环。此时i一定小 于或等于m-1。 当所有i值都不能整除m时,循环自动结束。此时i一定 大于或等于m。 因此:若i大于或等于m,则m为素数,若i小于或等于 m-1则m不是素数。 main() int m,i; scanf(“%d”, for(i=2;i=m) printf(“%d is prime number.n”,m); else printf(“%d is not a prime number.n”,m); m=5,m=8 练习:判断一个自然数m(m1)是否为素数 一个循环外面包围一层循环称为二重循环。一个循环外面包围一层循环称为二重循环。 一个循环外

16、面包围二层循环称为三重循环。一个循环外面包围二层循环称为三重循环。 一个循环外面包围多层循环称为多重循环。一个循环外面包围多层循环称为多重循环。 while、do-while、for可互相嵌套自由组合。可互相嵌套自由组合。 什么叫循环嵌套?什么叫循环嵌套? 一个循环的循环体中套有另一个循环叫循环一个循环的循环体中套有另一个循环叫循环 嵌套。这种嵌套过程可以一直重复下去。嵌套。这种嵌套过程可以一直重复下去。 5.5 5.5 循环的嵌套循环的嵌套 例例1:打印如下图形:打印如下图形: * * * * * main() int i,j; for (i=1;i=5;i+) for (j=1;j=i;j

17、+) printf(“*”); printf(“n”); 例例2:求:求3!+5!+7!+9! main() int i,j; long t,s=0; for (i=3;i=9;i=i+2) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; printf(“s=%ld”,s); 例例1:打印如下图形:打印如下图形: * * * main() int i,j; for (i=1;i=3;i+) for (j=1;j=3-i;j+) printf(“ ”); for (j=1;j=2*i-1;j+) printf(“*”); printf(“n”); 5.6 5.6 几种循环语

18、句的比较几种循环语句的比较 共同特点:循环控制条件非零时,执行循环体,否则终止循环。共同特点:循环控制条件非零时,执行循环体,否则终止循环。 循环体语句可以是任何语句:简单语句、复合语句、空语句。循环体语句可以是任何语句:简单语句、复合语句、空语句。 whilewhile和和forfor:先判断先判断循环控制条件,循环体可能一次也不执行;循环控制条件,循环体可能一次也不执行; do-whiledo-while:后判断后判断循环控制条件,循环体至少执行一次。循环控制条件,循环体至少执行一次。 在循环体内或循环条件中必须有使循环趋于结束的语句,否则会在循环体内或循环条件中必须有使循环趋于结束的语句

19、,否则会 出现死循环等异常情况。出现死循环等异常情况。 三种循环可以处理同一问题,一般情况可以互相代替。实际应用三种循环可以处理同一问题,一般情况可以互相代替。实际应用 中,根据具体情况来选用不同的循环语句。中,根据具体情况来选用不同的循环语句。 5.7 5.7 改变循环执行的状态改变循环执行的状态 一、一、break break 语句语句 一般形式:一般形式:break ;break ; 功能:结束当前的一层循环。功能:结束当前的一层循环。 一般用在循环体的条件语句中,一般用在循环体的条件语句中, 作用:当某个条件成立时用作用:当某个条件成立时用 breakbreak语语句退出循环,不再继句

20、退出循环,不再继 续执行其余的几次循环。续执行其余的几次循环。 例题:打印半径为例题:打印半径为110的圆的的圆的 面积,如果面积超过面积,如果面积超过100,则,则 不再打印。不再打印。 #include #define pi 3.14159 main() int r; float area; for(r=1; r100.0) break; printf(area=%fn,area); printf(now, r=%dn,r); 二、二、continue语句语句 一般形式:一般形式:continue ; 功能:提前结束循环体,功能:提前结束循环体, 进入下一循环周期。进入下一循环周期。 一旦

21、执行了一旦执行了continuecontinue语语 句,程序就跳过循环体句,程序就跳过循环体 中位于该语句后的所有中位于该语句后的所有 语句,提前结束本次循语句,提前结束本次循 环周期并开始下一个循环周期并开始下一个循 环周期。环周期。 例:计算用户输入的所有正整数例:计算用户输入的所有正整数 的和,用户输入的和,用户输入 0 时结束。时结束。 #include main() long data, sum; sum = 0; do printf(“please input : data=”); scanf(%ld, if( data 0 ) continue; sum = sum + dat

22、a; while( data != 0 ); 作业:140页4、141页16题 下周交实验报告112页7题 格式:按照上机指导书171页附录d 格式书写 采用统一的实验报告纸 majpjmvcyzj21hlfrvy96dv02lppfygxus7iymzkyemz0kgeyzs3bplckyh1lt4ek7cxmux3ijoysoer7zuavwygz4epzruirvpmzzvntf1xzw5oswsxotfaejnocmfe1lzgnn1rsxg8wlcg8cvq3xpjmvodpfwcpiyjgzaznsepniaklysu7qsd1upaxmzdlpn9zw7kljfslcli26yv109ffbndh8lbun1g6acurq39eg12khl9txsz1jzgock8g1kunoh

温馨提示

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

评论

0/150

提交评论