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

下载本文档

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

文档简介

1、循环结构的特点: 在给定条件成立时,反复执行某程序段, 直到条件不成立为止。,在C语言中,实现循环结构的语句主要有3种: for语句 while doWhile,注意两个概念: 1、给定的条件称为循环条件 2、反复执行的程序段称为循环体,执行过程: 计算表达式的值,当值为真(非0)时, 执行循环体语句。,while语句的一般形式为: while(表达式) 语句; 表达式是循环条件,语句为循环体,一、while语句,说明: 计算的值,若表达式的值为真(非0)时,则执行循环体语句;不断反复,直到表达式的值为假(0),则不执行循环体语句,而直接转向循环体外的第一条语句。 是循环反复执行的程序,称为“

2、循环体”,当需要执行多条语句时,应使用“ ”括起来组成一个复合语句。 while语句是先判断条件,后执行循环体,为“当型”循环,因此若条件不成立,有可能一次也不执行循环体。 一般情况下,while型循环最适合于这种情况:知道控制循环的条件为某个逻辑表达式的值,而且该表达式的值会在循环中被改变。,例: 编程序求:s=1+2+3+100,main() int s=0,i=1; while (i=100) s=s+i; i+; printf(S=%d,s); ,思考:如何求n!,二、do.while语句,Do-while语句的一般形式为: do 语句; while (表达式);,执行过程: 先执行循

3、环体语句一次,再判别表达式的值,若为真(非0)则继续循环,否则终止循环。,例: 编程序求:s=1+2+3+100,main() int s=0,i=1; do s=s+i; i+; while (i=100); printf(S=%d,s); ,求最大公约数的N-S流程图,典型例题(例5-8):求两个整数的最大公约数、最小公倍数,m n r,m n r,12 8,4,8,4,0,最大公约数 4 最小公倍数 12*8/4=24,辗转相除法,void main() int n,m,nm,r,t; printf(Enter m,n=?); scanf(%d%d, ,使用while和do-while语

4、句应注意以下几点 ,1.在if语句,while语句中,表达式后面都不能加分号,而在 do-while语句的表达式后面则必须加分号。 2.当循环体由多个语句组成时,也必须用括起来组成一个复合语句。 3. 如果循环至少要执行一次, while和do-while语句可以相互替换。,for语句使用一般形式为: for(表达式1;表达式2;表达3) 语句;,表达式1(控制变量的初始化 ): 用来给循环变量赋初值,也允许在for语句外给循环变量赋初值,此时可以省略该表达式。,表达式2(循环的条件)循环条件,一般为关系表达式或逻辑表达式。,表达式3(循环控制变量的更新 ) 用来修改循环变量的值,一般是赋值语

5、句。,三、for循环语句,1.首先计算表达式1的值。 2.再计算表达式2的值,若值为真(非0)则执行循环体一次,否则跳出循环。 3.然后再计算表达式3的值,转回第2步重复执行。,注意: 在整个for循环过程中,表达式1 只计算一次,表达式2和表达式3则可能计算多次。,for语句的执行过程:,例:用for语句计算s=1+2+3+.+99+100,main() int i,s=0; for(i=1;i=100;i+) s=s+i; printf(s=%dn,s); ,说明: (1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不

6、能省略。 例如:for(; i=n; i+) t=t*i; 执行时,跳过“求解表达式1”这一步,其他不变。 (2)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2 始终为真,在形式上构成死循环。 例如:for(i=1 ; i+) t=t*i;,(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束,表达式3的功能放到循环体内。 例如:for(i=1;i=n;) t=t*i; i+; ,(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。,for(;i=n;) t=t*i; i+;,i=1;,(5)3个表达式都可省略。 例如:for(;)

7、语句 相当于 while(1)语句。 (6)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。 例如:for(t=1, i=1; i=n ; t=t*i, i+ );,四、循环的嵌套多重循环结构。,一个循环内完整地包含另一个循环结构,则称为多重循环,嵌套一层称为二重循环,嵌套二层称为三重循环,(1) while( ) while( ) ,do do while(); while();,(4) while() for() ,(3) for() for() ,例:打印如下形式的九九乘法表.,main() int x,y; for(x=1;x=

8、9;x+) for(y=1;y=9;y+) printf(%d*%d=%2d ,x,y,x*y); printf(n); ,思考:若改为如下形式程序应该如何修改? 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 . ,for(y=1;y=x;y+),例5-12打印如下所示图案。,1 222 33333 4444444 555555555 66666666666 7777777777777 888888888888888 99999999999999999,例打印由数字组成的如下所示金字塔图案。,void main() int i,k,j; for(i=1;i=9;i+) /* 外循环控制打印行数 */ for (k=1;k=10-i;k+) /* 每行起始打印位置 */ printf( ); for (j=1;j=2*i-1;j+) /* 内循环控制打印个数 */ printf(%

温馨提示

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

评论

0/150

提交评论