《循环结构序设计》PPT课件_第1页
《循环结构序设计》PPT课件_第2页
《循环结构序设计》PPT课件_第3页
《循环结构序设计》PPT课件_第4页
《循环结构序设计》PPT课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 循环结构程序设计 7.1 7.1 循环的概念循环的概念 7.2 7.2 实现循环的语句实现循环的语句 7.3 break7.3 break和和continuecontinue语句语句 7.4 7.4 循环的嵌套循环的嵌套 7.5 7.5 循环结构程序设计举例循环结构程序设计举例 7.1 7.1 循环的概念循环的概念 当所要解决的问题存在重复执行内容时,应该使用循环结当所要解决的问题存在重复执行内容时,应该使用循环结 构来实现,具体的设计步骤可归纳如下。构来实现,具体的设计步骤可归纳如下。 (1)构造循环体。将问题中需要重复执行的部分,利用)构造循环体。将问题中需要重复执行的部分,利用C

2、语言语言 规则归纳出一组程序段。在归纳的过程中应充分利用变量是一规则归纳出一组程序段。在归纳的过程中应充分利用变量是一 个变化的量的概念。如本列中变量个变化的量的概念。如本列中变量score在不同的时刻代表的是在不同的时刻代表的是 不同学生的成绩。不同学生的成绩。 (2)寻找控制循环的变量。有的题目循环的次数是确定的,可)寻找控制循环的变量。有的题目循环的次数是确定的,可 以使用计数器来控制循环;有的题目循环的次数不是确定的,那以使用计数器来控制循环;有的题目循环的次数不是确定的,那 么使用计数器就不合适了,设计者应从题目中去寻找规则变化的么使用计数器就不合适了,设计者应从题目中去寻找规则变化

3、的 量来控制循环体完成规定的次数。量来控制循环体完成规定的次数。 (3)找出控制变量的)找出控制变量的3个要素。个要素。 循环控制变量的初值。循环控制变量的初值。 循环的条件。循环的条件。 使循环趋于结束的部分。使循环趋于结束的部分。 7.2 7.2 实现循环的语句实现循环的语句 77.22.1 wh1 whil le语句语句 while语句是实现当型结构循环的语句,其一般形式为语句是实现当型结构循环的语句,其一般形式为 while(逻辑量逻辑量) 循环体语句循环体语句 其中,其中,while是是C语言的关键字,语句中的逻辑量为循环条件。语言的关键字,语句中的逻辑量为循环条件。 while语句

4、的流程图如图语句的流程图如图7.2所示。所示。 条 件 P 循 环 体 A 循 环 条 件 ( P) 循 环 体 ( A ) 使用使用while语句实现循环时,语句中的逻辑量对应于循环条件语句实现循环时,语句中的逻辑量对应于循环条件 P,循环体语句对应于循环体,循环体语句对应于循环体A。while语句执行时,首先判断逻语句执行时,首先判断逻 辑量的值,如果逻辑量为辑量的值,如果逻辑量为1,则首先执行循环体语句,然后继续判,则首先执行循环体语句,然后继续判 断逻辑量;如果逻辑量为断逻辑量;如果逻辑量为0,则结束循环,执行循环的后续语句。,则结束循环,执行循环的后续语句。 例例77.3 3 求求1

5、到到100的和。的和。 根据流程图写出程序:根据流程图写出程序: main() int i,sum; sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%dn,sum); sum =0,i=1 i=100 sum =sum +i i+ 输 出 累 加 和 sum 图7.3 例7.3的N-S流程图 例例77.4 4 求求n!。!。 main() float fac; int i,n; fac=1; i=2; scanf(%d, while(i=n) fac=fac*i; i+; printf(n!=%.0fn,fac); fac=1,i=2 当 i=n

6、 时 fac=fac*i i+ 输 出 阶 乘 fac 图7.4 例7.4的N-S流程图 77.22.2 2 do o-whwhil le语句语句 do-while语句是实现直到型循环结构的语句,其一般形式为:语句是实现直到型循环结构的语句,其一般形式为: do 循环体语句循环体语句 while(逻辑量逻辑量); do-while语句的流程图如图语句的流程图如图7.6所示。所示。 循 环 体 A 条 件 P 循 环 体 (A ) 循 环 条 件 (P) 使用使用do-while语句实现循环时,语句中的逻辑量对应语句实现循环时,语句中的逻辑量对应 于循环条件于循环条件P,循环体语句对应于循环体,

7、循环体语句对应于循环体A。do-while语句语句 执行时,首先执行循环体语句,然后判断逻辑量,如果逻执行时,首先执行循环体语句,然后判断逻辑量,如果逻 辑量为辑量为1,则继续执行循环体语句;如果逻辑量为,则继续执行循环体语句;如果逻辑量为0,则结,则结 束循环,执行循环的后续语句。束循环,执行循环的后续语句。 例例77.9 求两个数的最大公约数。求两个数的最大公约数。 输 入 m ,n m n Y N m n r=m % n r!=0 m =n,n=r r=m % n 输 出 最 大 公 约 数 n 输 入 m ,n m n Y N m n r=m % n m =n,n=r r!=0 输 出

8、 最 大 公 约 数 m (a)当型结构 (b)直到型 结构 图7.8 例子的两种结构的N-S图 根据流程图可得到程序:根据流程图可得到程序: main() main() int m,n,r; int m,n,r; scanf(%d,%d, scanf(%d,%d, if(mn) if(mn) r=m,m=n,n=r; r=m,m=n,n=r; r=m%n; do while(r!=0) m=n; r=m%n; n=r; m=n; r=m%n; n=r; while(r!=0); printf(%dn,n); printf(%dn,m); 77.22.3 for3 for语句语句 for语句是

9、实现当型循环结构的语句,语句是实现当型循环结构的语句,for语句是语言所提供的功语句是语言所提供的功 能更强、使用更广泛的一种循环语句。其一般形式为:能更强、使用更广泛的一种循环语句。其一般形式为: for(表达式表达式1;逻辑量逻辑量;表达式表达式2) 循环体语句;循环体语句; 表达式表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许通常用来给循环变量赋初值,一般是赋值表达式。也允许 在在for语句外给循环变量赋初值,此时可以省略该表达式。逻辑量通常语句外给循环变量赋初值,此时可以省略该表达式。逻辑量通常 是循环条件,一般为关系表达式或逻辑表达式,也可以是任意是循环条件,一般为关系表

10、达式或逻辑表达式,也可以是任意“确定的确定的 值值”。表达式。表达式2通常是使循环趋于结束的部分,一般是赋值表达式。通常是使循环趋于结束的部分,一般是赋值表达式。 for 语句对应的传统流程如图语句对应的传统流程如图7.9所示。所示。 for语句的执行过程如下:语句的执行过程如下: (1)求解表达式)求解表达式1。 (2)判断逻辑量,如果为)判断逻辑量,如果为1,则执行循环体语句,然后执行第,则执行循环体语句,然后执行第3 步;如果为步;如果为0,则结束循环,执行循环的后续语句。,则结束循环,执行循环的后续语句。 (3)求解表达式)求解表达式2。转向第。转向第2步执行。步执行。 从从for语句

11、的形式可以看出语句的形式可以看出for后的括号内三项内容分别对应于循后的括号内三项内容分别对应于循 环的三要素,能清晰地描述循环。我们可以采取图环的三要素,能清晰地描述循环。我们可以采取图7.10所示的所示的 方式来描述方式来描述for语句对应的语句对应的N-S流程图。流程图。 图7.9 for 语句的传统流程图 图7.10 for语句的N-S流程图 Y N 逻 辑 量 求 解 表 达 式 1 循 环 体 语 句 循 环 的 后 续 语 句 求 解 表 达 式 2 for( 表 达 式 1;逻 辑 量 ;表 达 式 2) 循 环 体 语 句 例例77.1111 求求 。 xxxd)( 5 0

12、2 main() float sum=0,s=0; float x,h; scanf(%f, for(x=0;x5;x=x+h) s=(x*x+x+(x+h)*(x+h)+x+h)*h/2 sum=sum+s; printf(jifen=%.2fn,sum); 图7.11 例7.11的N-S流程图 sum 0 输 入 h for(x0;x0;n-) a+; printf(%8d,a*2); printf(n); (3)可省去表达式)可省去表达式2,应该在循环体部分增加使循环趋于结束部分。,应该在循环体部分增加使循环趋于结束部分。 例例77.1313 main() int a,n; a=0; f

13、or(n=9;n0;) printf(%8d,a*a); n-; printf(n); (4)省略逻辑量,则循环条件为真,那么在循环)省略逻辑量,则循环条件为真,那么在循环 体中应有循环结束语句,否则是死循环。体中应有循环结束语句,否则是死循环。 (5)省略表达式)省略表达式1和表达式和表达式2,for语句相当于语句相当于while 语句。语句。 例例77.1414 main() /*计算计算xn */ float x,xexpn; int n,i; scanf(%f,%d, xexpn=1; i=1; for(;i=n;) /*等同于等同于while(in)*/ xexpn*=x; i+;

14、printf(%fn,xexpn); (6)循环体可以是空语句。)循环体可以是空语句。 例例77.115 #include stdio.h main() int count; count=0; printf(input a string:n); for(;getchar()!=n;count+); printf(%dn,count); 无论无论for语句如何省略括号内的内容,循环的三个要素是必须要体现的,所以在使用语句如何省略括号内的内容,循环的三个要素是必须要体现的,所以在使用for语句时,语句时, 要充分理解要充分理解for语句的执行过程。语句的执行过程。 7.3 break7.3 bre

15、ak和和continuecontinue语句语句 77.33.1 br1 breaak语句语句 break语句也可以在循环体中使用,作用是结束循环,继语句也可以在循环体中使用,作用是结束循环,继 续执行循环的后续语句。续执行循环的后续语句。break语句的一般形式为:语句的一般形式为: break; 使用使用break语句可以使循环语句有多个出口,在一些场合语句可以使循环语句有多个出口,在一些场合 下使编程更加灵活、方便。下使编程更加灵活、方便。 例例77.1717 判断某个一位数是否在一个不高于四位的整数中出现判断某个一位数是否在一个不高于四位的整数中出现 。 图7.12 例7.17的N-S

16、流程图 flag=1( 假 定 n 没 有 在 m 中 出 现 ) 输 入 m ,n 当 m !=0 时 n= Y m % 10 N flag=0 break m =m /10 输 出 flag main() int m,n; int flag; flag=1; scanf(%d,%d, while(m!=0) if(n=m%10) flag=0; break; m=m/10; if(flag=0) printf(yesn); else printf(non); 77.33.2 co2 cont tinu ue语句语句 continue语句只能用在循环体中。语句只能用在循环体中。 其一般格式是

17、:其一般格式是: continue; continue语句的功能是结束本次循环,即不再执行循环体中语句的功能是结束本次循环,即不再执行循环体中 continue 语句之后的语句,转入下一次循环执行。应注意的是,该语句之后的语句,转入下一次循环执行。应注意的是,该 语句只结束本层本次的循环,并不跳出循环。语句只结束本层本次的循环,并不跳出循环。 使用使用continue语句时,应该清楚在不同的循环语句中下次循环语句时,应该清楚在不同的循环语句中下次循环 的起点是什么。在的起点是什么。在while和和do-while语句中,下次循环的起点是判断语句中,下次循环的起点是判断 逻辑量;在逻辑量;在fo

18、r语句中,下次循环的起点是计算表达式语句中,下次循环的起点是计算表达式2的值。的值。 例例77.1818 输出输出11000之间能被之间能被3、5、7同时整除的数。同时整除的数。 main() int n; for(n=1;n=1000;n+) if (n%3!=0) continue; if (n%5!=0) continue; if (n%7!=0) cntinue; printf(%8d,n); printf(n); 7.4 7.4 循环的嵌套循环的嵌套 当一个循环体内又包含另一个循环结构时,称为循当一个循环体内又包含另一个循环结构时,称为循 环的嵌套。被嵌入的循环又可以嵌套其他的循环,这就环的嵌套。被嵌入的循环又可以嵌套其他的循环,这就 是多重循环。是多重循环。 例例77.119 分析以下循环内外层循环控制变量的变化。分析以下循环内外层循环控制变量的变化。 main() int i,j; int mul; for(i=1;i10;i+) for(j=1;j10e-6

温馨提示

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

评论

0/150

提交评论