c5循环结构程序设计_第1页
c5循环结构程序设计_第2页
c5循环结构程序设计_第3页
c5循环结构程序设计_第4页
c5循环结构程序设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 C语言程序设计第5章 循环结构程序设计问题:实际生活生产中,经常需要重复进行某些动作,即循环,C中允许吗? 使用语句对程序的执行情况进行循环控制。循环结构程序设计 小学生的作业经常是要求一个字重复写多少遍连锁店也是一种复制机械化生产流水线生产这些事件的特点是: 满足一定条件时,对某一动作进行重复。 C语言在进行程序设计的时候,也提供了同样的结构供用户使用:循环结构。引子 本章要点第5章 循环结构程序设计 本章难点 while语句构成的循环结构 do-while语句构成的循环结构 for语句构成的循环结构 Break语句和continue语句 多重循环结构的实现 for循环结构 多重循环结构的

2、实现5.15.25.35.4概述while语句do-while语句for语句第5章 循环结构程序设计5.5break语句和continue语句5.65.7循环的嵌套循环结构程序设计举例第5章 循环结构程序设计C语言可实现循环的语句:用goto 和 if 构成循环while 语句do while 语句for 语句goto语句及用goto构成循环goto语句一般格式:功能:无条件转移语句说明:不能用整数作标号只能出现在goto所在函数内,且唯一只能加在可执行语句前面限制使用goto语句 goto 语句标号; .标号:语句; 5.1 概述#include main() int i=1,sum=0;l

3、oop: sum= sum+i; i+; if(i=100) goto loop; printf(“the sum of 1 to 100 is:%dn,sum);sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050循环初值循环终值循环变量增值循环条件例 用goto语句构成循环,求1到100的整数和。循环体运行结果:the sum of 1to 100 is:5050 5.15.25.35.4概述while语句do-while语句for语句第5章 循环结构程序设计5.5break语句和continue语句while(表达式) 循环体语句;表达式循环

4、体假(0)真(非0)while5.2 while语句一般形式:执行过程:任意合法的表达式(关系或逻辑表达式),只要表达式的值为真(非0)就继续循环。特点:先判断表达式,再执行循环体例5.2 统计从键盘输入一行字符的个数。#includemain() int n=0; printf(input a string:n); while(getchar()!=n) n+; printf(%d,n); 循环条件变量初值循环体注意:while(i=100) sum=sum+i; i+;main() int m,n=0; while(m=3) ; printf(%d,n+); 循环体如包括有一个以上的语句,

5、则必须用花括弧括起来,组成复合语句。否则,while 语句的作用范围就只是while语句后面的第一个分号处。 应注意循环条件的选择以避免死循环。循环体为空(允许)循环条件为真死循环5.15.25.35.4概述while语句do-while语句for语句第5章 循环结构程序设计5.5break语句和continue语句do 循环体语句; while(表达式);5.3 do-while语句一般形式:执行过程:do循环体表达式假(0)真(非0)while特点:先执行循环体,再判断表达式至少执行一次循环体例5.3 求整数i,它满足条件: 1+2+(i-1)100且1+2+ + i 100。main()

6、 int i=0,sum=0; do i+; sum=sum+i; while(sum100); printf(the integer is:%dn,i);dosum=sum+isum100假(0)真(非0)while运行结果:the integer is:14 例5.4任意输入一个正整数,将该数各位颠倒顺序输出。如,输入1234,输出为4321。算法分析:根据题目要求,可以采用除10取余的方法,依次从输入数的右边截取各位数字输出。main() int n,d; printf(input a integer:); scanf(%d,&n); while(n!=0) d=n%10; printf

7、(%d,d); n=n/10; do d=n%10; printf(%d,d); n=n/10; while(n!=0);运行结果:input a integer:12344321注意:(1) do-while循环由do开始,一直到while结束。do-while语句的表达式后面则必须加分号,表示do-while循环的结束。(2) 在do和while之间的循环体由多个语句组成时,必须用花括弧括起来组成一个复合语句。(3) do-while和while语句相互替换时,要注意修改循环控制条件。对于循环体至少要执行一遍的这类问题,编程时就应该尽量使用do-while语句。(4) 程序中要有使循环条件

8、从真变成假的语句,否则就会造成死循环。5.15.25.35.4概述while语句do-while语句for语句第5章 循环结构程序设计5.5break语句和continue语句for(表达式1;表达式2;表达3)语句;5.4 for语句一般形式:执行过程:表达式2循环体假(0)真(非0)for表达式1表达式3表达式1:循环前赋值表达式2:循环条件表达式3:修改循环控制变量的值例5.5 将所有可显示字符与其ASCII 码的对照表在屏幕上输出。main() char c; for(c=32;c=126;c+) printf(%c %dn,c,c);运行结果: 32! 33 126 算法分析:ASC

9、II码表中前32个字符是计算机使用的控制字符,不能在屏幕上直接显示,ASCII码从32(空格)到126()都是可显示字符,逐一输出即可。 注意:for语句中的各表达式都可省略,但分号间隔符不能省for(;表达式2;表达式3)省去了表达式1,循环变量应在for语句之前赋初值。for(表达式1;表达式3)省去了表达式2。for(表达式1;表达式2;)省去了表达式3。for( ; )省去了全部表达式,此时表示是无限循环,除非通过后面将要介绍的break语句才能退出循环。循环体可以是一个分号,即空语句。i=1;for(; i100;i+) sum+=i; for(i=1; ;i+) sum=sum+i

10、; for(i=1;i=100;) sum+=i; i+; for(i=1;i=100;i+) ; sum+=i;5.15.25.35.4概述while语句do-while语句for语句第5章 循环结构程序设计5.5break语句和continue语句break;5.5 break语句和continue语句break语句的一般形式:功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中表达式break;假(0)真(非0)whiledobreak;.表达式假(0)真(非0)whi

11、lebreak语句的应用场合expr2break;.假(0)真(非0)forexpr1expr3break语句用于跳出循环体:switch表达式语句组1break;语句组2break;语句组nbreak;语句组break;.const 1const 2const ndefaultcase break语句的应用场合Break语句用于跳出开关体:例5.6 计算r=1到r=10时的圆面积,直到面积area大于100为止。 #define PI 3.1415926main() int r; float area; for(r=1;r100) break; printf(r=%d area is: %f

12、n,r,area); 运行结果:r=1 area is: 3.141593r=2 area is: 12.566370r=3 area is: 28.274334r=4 area is: 50.265480r=5 area is: 78.539818跳出循环(满足if条件时)continue;5.5 break语句和continue语句continue语句的一般形式:功能:结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。continue一般也要与if语句配合使用。continue语句只能用在循环体中 例5.7 输出100以内能被7整除的数。 m

13、ain() int n; for(n=7;n=100;n+) if(n%7!=0) continue; printf(%d ,n); 运行结果:7 14 21 28 35 42 49 56 63 70 77 84 91 98结束本次循环(不是终止整个循环 )由此处转去执行下次循环若是break语句,则结束整个循环(不再判断执行循环的条件是否成立 )表达式continue;假(0)真(非0)while真(非0)docontinue;.表达式假(0)while表达式2continue;.假(0)真(非0)for表达式1表达式3continue语句的应用场合5.65.7循环的嵌套循环结构程序设计举例

14、第5章 循环结构程序设计5.6 循环的嵌套三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉(即在一个循环体内必须完整地包含着另一个循环。 )内外循环的循环控制变量不能重名。同类循环可以多层嵌套,不同类的循环也可以相互嵌套。循环嵌套的结构中每一层的循环在逻辑上必须是完整的。 嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向上跳转循环的嵌套举例main() int i,j; for(i=0;i3;i+) printf(i=%d:,i); for(j=0;j4;j+) printf(j=%-4d,j); printf(n);运行结果:i=0:j=0 j=1 j=2 j=

15、3i=1:j=0 j=1 j=2 j=3i=2:j=0 j=1 j=2 j=3内层循环外层循环(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .内循环外循环内循环循环的嵌套示例5.65.7循环的嵌套循环结构程序设计举例第5章 循环结构程序设计5.7 循环结构程序设计举例累加、连乘算法 例5.8 国王的许诺。相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着

16、88共64格的象棋盘说:“陛下,请您赏给我一些麦子吧,就在棋盘的第1格子中放1粒,第2格子中放2粒,第3格子中放4粒,以后每一格都比前一格增加一倍,依次放完棋盘上的64个格子,我就感恩不尽了。” 舍罕王让人扛来一袋麦子,他要兑现他的许诺。请编程计算舍罕王共要多少粒麦子才能赏赐他的宰相? 算法分析:根据题设可知麦粒的总数应该是: sum=20+21+22+263 main() float sum,t; int i; for(t=1,sum=1,i=1;i=63;i+) t=t*2; sum=sum+t; printf(the total of kernels are :%e,sum);运行结果:

17、the total of kernels are:1.84467e+19 f1=1,f2=1for i=1 to 20输出f1,f2f1=f1+f2f2=f2+f1递推算法例5.10 求Fibonacci数列:1,1,2,3,5,8,的前40项,每行输出4项。main() long f1,f2;int i;f1=f2=1;for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(i%2=0)printf(n); /* 控制输出,每行四个 */ f1=f1+f2; /* 前两个加起来赋值给第三个 */ f2=f1+f2; /* 前两个加起来赋值给第三个 */ 15342331597109467502551422935245782415781718553772584 832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155运行结果:本章小结总览 C语言中常用的三种循环语句:while语句、do-while语句和

温馨提示

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

评论

0/150

提交评论