第5章 循环结构程序设计(2009-4-6).ppt_第1页
第5章 循环结构程序设计(2009-4-6).ppt_第2页
第5章 循环结构程序设计(2009-4-6).ppt_第3页
第5章 循环结构程序设计(2009-4-6).ppt_第4页
第5章 循环结构程序设计(2009-4-6).ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 循环结构程序设计,本章主要介绍: 当型循环while语句 直到型循环do-while语句 for循环语句,5.1 while语句和用while语句构成的循环结构,1、 while的一般形式 while (表达式) 循环体语句; 由while构成的循环也称“当”循环。在此循环中,需要明确: 、 while是C语言的关键字。 、 while后圆括号内的表达式可以是任何合法的C语言的表达式,但不能为空,由该表达式来控制循环是否执行。 、 规定循环体只能是一条语句,若有多条语句,则用复合语句。注意循环体语句界定符 的正确使用,当循环体语句不是由多条语句组成,则可省略 。,2、while 循环的

2、执行过程 、当while后面的扩号内的表达式的值为非0时 执行步骤2;当其值为0时执行步骤4。 、执行循环体一次。 、转回步骤1。 、结束循环,退出while循环。 执行过程如右图所示,【例51】 利用while循环语句,计算的值,并打印计算结果,程序如下: include main() int i; float sum; i=1,sum=0.0; while(i=50) sum+=1/(float)i; i+; printf(“总和sum=%fn”,sum); ,【例5】编写程序,求,直到累加和大于或等于为止。,程序如下: include main( ) int i, sum; i=0;su

3、m=0; while ( sum 10000 ) sum += i*i; i+; printf ( “n=%d sum = %dn”,i-1,sum); 程序运行后输出的结果如下,其中n代表最后一项的值: nsum=10416,5. do-while语句和用do-while语句构成的循环结构,1、 do-while的一般形式 do 循环体语句; while (表达式); 关于do-while循环的几点说明: do是语言的关键字,必须和while联合使用。 do-while循环由do开始,至while结束。要注意的是while(表达式)后的“;”不能省略,它表示do-while语句的结束。 wh

4、ile后一对圆括号中的表达式,可以是语言中任意合法的表达式,由它控制循环是否执行。 按语言的语法,在do和while之间的循环体只能是一条可执行语句。若循环体内需要多个语句,应该使用复合语句。建议在循环体内只有一条语句时也不省略“”,以避免和while语句混淆。,2、 do-while循环的执行过程 do-while循环的执行过程如下: 执行do 后面循环体中的语句。 计算表达式的值,当值为非0时转去执行步骤(1),当值为0时转去执行步骤(3)。 退出do-while循环。,【例53】计算,程序如下: include main( ) int k,sum; k=1;sum=0; do sum+=

5、k; k+; while(k=100); printf(“nsum=%d”,sum); 程序运行结果: sum=5050,5.3 for语句和用for语句构成的循环结构,1、for循环语句的一般格式 for(初始表达式;循环条件表达式;变量增值表达式) 循环体语句; 2、for循环语句的执行过程 先执行初始表达式。 计算循环条件表达式,若值为非(“真”), 执行循环体,若为(“假”),则结束循环; 计算变量增值表达式,然后重复执行第二步。 其流程图如右所示,【例54】用for循环计算,程序如下: include main() int k,sum; for(k=1,sum=0;k=100;k+)

6、 sum=sum+k; printf(“n1+2+3+100=%d”,sum); 程序运行结果: +100=5050,for语句的使用说明 如果for语句的循环体由多个语句组成,则必须用左右花括号括起来,使其形成复合语句。 for语句中的初始表达式和变量增值表达式既可以是一个简单表达式,也可以是由逗号运算符将多个表达式连接起来的形式。 for语句中的循环条件表达式用来控制是否继续执行循环体,即控制循环次数。 for语句中的任何一个表达式都可以省略,但分号“;”一定要保留。省略的表达式部分的功能,可以用其他语句去完成。,我们以【例5.4 】中的for循环语句: for(k=1,sum=0;k10

7、0)break;通过break跳出循环体 sum=sum+k; (3)省略变量增值表达式:for(初始表达式;循环条件表达式;) for(k=1,sum=0;k=100;) sum=sum+k; k+;把变量增值表达式放在循环体内 ,(4)初始表达式和循环条件表达式同时省略:for(;变量增值表达式) k=1;sum=0; for(;k+) if(k100)break; sum=sum+k; (5)省略循环条件表达式和变量增值表达式:for(初始表达式;) for(k=1,sum=0 ; ;) if(k100)break; sum=sum+k; k+ ; (6)全部省略:for(;) k=1;

8、sum=0; for(;) if(k100)break; sum=sum+k; k+ ; (7)循环体语句也可以是空语句,如果把【例5.4 】改为: for(k=1,sum=0;k=100;sum=sum+k,k+); 那么循环体就为空了。,5.4 循环结构的嵌套,在一个循环的循环体内又完整地包含了另外一个循环语句,称为循环嵌套。前面所介绍的三种类型的循环都可以相互嵌套,循环的嵌套可以是多层,但每一层循环在逻辑上必须是完整的。循环嵌套时,外层循环执行一次,内层循环从头到尾执行一遍。 在编写程序时,循环嵌套的书写建议采用缩进的形式,这样层次分明,易于阅读。,【例55】 打印如下图九九乘法表。,1

9、 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 第1行 2 2 4 6 8 10 12 14 16 18 第2行 . . . . . . k k*1 k*2 k*3 k*i k*9 第k行 . . . . . . 9 9 18 27 36 45 54 63 72 81 第9行,程序如下: include main() int k,i; for ( k=1;k=9;k+) printf(“n”); for ( i=1;i=9;i+) printf(“%5d”,k*i); ,【例56】 使用双层for循环打印如下由星号组成的倒三角图形,include main() int

10、 k,i,j; for ( i=1;i=4;i+) for(k=1;k=i-1;k+) printf( “ ”); for(j=1;j7+(i-1)*(-2);j+) printf(“*”); printf(“n”); ,* * * *,5.5 break 和 continue 语句在循环体中的作用,1、break 和 continue的功能 break :、在switch语句中使流程跳出switch语句;、在循环语句中强行结束本层循环,转去执行循环语句的下一条语句。 continue:结束本次循环。对于while和do-while循环,跳过循环体其余语句,转到循环终止条件的判断;而对for循

11、环,跳过循环体其余语句,转到循环变量增值量表达式的计算。要注意continue并没有使整个循环终止。 2、 对break 和 continue的说明 break 只能用于循环语句和switch语句中,continue 只能用于循环语句中。而且往往是在一个特殊的条件成立时,执行break 和 continue语句。 循环嵌套时,break 和 continue 只影响包含它们的最内层循环,与外循环无关。,3、 break和continue语句对循环控制的影响,【例57】 计算s=1+2+3+i,直到累加到s大于5000为止,并给出s和i的值。,程序如下: include main() int i

12、,s; s=0; for (i=1; ;i+) s=s+i; if (s5000) break; printf (“s=%d,i=%dn”,s,i ); 运行后的结果如下: s=5050,i=100,【例58】求1 100之间不能被8整除的数。,程序如下: #include main() int n; for (n=1;n=100;n+ ) if (n%8= =0 ) continue ; printf(“%4d”,n) ; 程序运行结果如下:,【例511】输出 3 100 中的所有素数。,如果k是素数,则k不能被2 (k-1)之间的任何一个整数整除。所以,只要从2开始到k-1,逐个相除,如果有一个数能整除,则k不是素数,否则,k就是素数。 程序如下: #include main() int j,k ; for( k=3;k100;k+) for ( j=2;jk;j+) if(k%j = =0) break ; if(

温馨提示

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

评论

0/150

提交评论