第5章 循环结构程序设计.ppt

上传人:inwarn120 文档编号:388568 上传时间:2018-10-12 格式:PPT 页数:43 大小:1.46MB
下载 相关 举报
第5章 循环结构程序设计.ppt_第1页
第1页 / 共43页
第5章 循环结构程序设计.ppt_第2页
第2页 / 共43页
第5章 循环结构程序设计.ppt_第3页
第3页 / 共43页
第5章 循环结构程序设计.ppt_第4页
第4页 / 共43页
第5章 循环结构程序设计.ppt_第5页
第5页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第5章 循环结构程序设计,主要内容,一、循环结构处理的问题 二、循环结构的设计要素 三、循环结构的两种形式 四、实现单循环结构的语句 五、循环结构的嵌套,重复N次,某件事,一、循环结构处理的问题,刷牙机器人,一、循环结构处理的问题,图像加密,一、循环结构处理的问题,求1+2+3+4+5+n;将10个人按高到矮排列;在N个数中查找x 。,一、循环结构处理的问题,1、循环初始化包括循环体的变量赋初值,循环变量赋初值。2、循环控制循环终止条件限制,循环控制变量修改。3、循环体需要重复的事。,二、循环结构设计要素,例1:求1+2+3+4+5+n。,需要重复的事:累加循环初始化:p=1; i=2;循环控

2、制: in ; i=i+1 。,S1:p=1; S2:i=2; S3:p=p+i; S4:i=i+1; S5:若in,返回S3。否则,结束。,二、循环结构设计要素,例2:查找一竖排座位上个最高的人。,需要重复的事:两个人的个头比较;循环初始化:i=1; 循环控制: in ; i=i+1 。,二、循环结构设计要素,五 循 环 结 构 的 嵌 套,三、循环结构两种形式,五 循 环 结 构 的 嵌 套,1、“当”循环,针对问题类型:需要先判断条件再去执行。,三、循环结构两种形式,2、“直到”循环,针对问题类型:至少要先做重复的事一次再判断条件。,例:从键盘从输入一串字符,以。为结束,三、循环结构两种

3、形式,1、while语句一般形式:While (表达式) 循环体语句 ,当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。,四、实现单循环结构的语句,例3 求1+2+3+4+5+100。,开始,p=1,结束,真(非0),假(0),p=p+i,i101?,输出p,i=2,i=i+1,#include void main( ) int i,p;p=1;i=2;while(i101)p=p+i;i=i+1;printf(“%dn”,p);,四、实现单循环结构的语句,2、dowhile语句一般形式: do 循环体语句while (表达式);,先执行一次指定的循环体

4、语句,然后判别表达式,当表达式的值为非零(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止。,四、实现单循环结构的语句,例4 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如:将字母变成其后的第4个字母。AE,ae,WA,XB,YC,ZD。从键盘上输入一串字符,要求输出其相应的密码。,四、实现单循环结构的语句,四 实现单循环结构的语句,解题思路:1、在读入字符串过程中,需要读一个字符,作一个转换,要重复N次,可用循环结构,重复的事为:读一个字符,作一个转换。2、读入字符后,先判断它是不是字母,是字母则加密,不是则保持原值不变。3

5、、在对一个字母进行转换时分两段来转换:变量c在AV,av时, c=c+4;在wZ,wz时,c=c-22;,四、实现单循环结构的语句,假(0),开始,结束,假(0),c=c+4,输入回车?,输出c,c=c-22,#include void main( ) char c;doc=getchar();if(c=a ,读一个字符c,C是字母?,C在wz之间?,假(0),真(非0),真(非0),真(非0),3、for语句一般形式:for(表达式1;表达式2;表达式3) 语句,相当于:for(循环变量赋初值;循环条件;循环变量增值),四、实现单循环结构的语句,用for 语句实现循环图示,循环初始化,循环控

6、制条件,循环体,for语句等价于下列语句: 表达式1; while (表达式2) 语句;表达式3; ,说明: for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如:for(;i=100;i+) sum=sum+i;,四、实现单循环结构的语句,说明: (2) 如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如:for(i=1; ;i+) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺。它相当于:i=1;while(1)sum=sum+1;i+;,四、实现单循环结构的语

7、句,说明: (3) 表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。如:for(i=1;i=100;)sum=sum+i;i+; i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,四、实现单循环结构的语句,说明: (4) 可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for(;i=100;) sum=sum+i; i+; 相当于 while(i=100) sum=sum+i ; i+; 在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环

8、变量自动增值等。,四、实现单循环结构的语句,说明: (5) 3个表达式都可省略,如:for(; ;) 语句相当于while(1) 语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。,四、实现单循环结构的语句,说明: (6) 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。如: for (sum=0;i=100;i+) sum=sum+i;表达式3也可以是与循环控制无关的任意表达式。,四、实现单循环结构的语句,说明:表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。如: f

9、or(sum=0,i=1;i=100;i+) sum=sum+i;或for(i=0,j=100;i=j;i+,j-) k=i+j;表达式1和表达式3都是逗号表达式,各包含两个赋值 表达式,即同时设两个初值,使两个变量增值.,四、实现单循环结构的语句,说明:在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。 如:for(i=1;i=100;i+,i+) sum=sum+i;相当于for(i=1;i=100;i=i+2) sum=sum+i;,四、实现单循环结构的语句,说明: (7) 表达式一般是关系表达式(如i=100)或逻辑表达式(如ab & xy),但也可以是数值

10、表达式或字符表达式,只要其值为非零,就执行循环体。,四、实现单循环结构的语句,说明: for(i=0;(c=getchar()!=n;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于n(换行符),如果不等于n,就执行循环体。注意:此for语句的循环体为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的。可见for语句功能强,可以在表达式中完成本来应在循环体内完成的操作。,四、实现单循环结构的语句,说明: for( ;(c=getchar()!=n;)printf(%c,c);for语句中只有表达式2,而无表达式1和表达式3。其作用是每读入一

11、个字符后立即输出该字符,直到输入一个“换行”为止。请注意,从终端键盘向计算机输入时,是在按Enter键以后才将一批数据一起送到内存缓冲区中去的。,运行情况: Computer (输入) Computer (输出) 而不是 Ccoommppuutteerr,四、实现单循环结构的语句,例5 求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3),四、实现单循环结构的语句,假(0),开始,结束,i=20?,输出f1,f2,f1=f1

12、+f2,真(非0),f1=1,f2=1,i=1,f2=f1+f2,i=i+1,#include void main( ) long int f1,f2;int i;f1=1;f2=1;for(i=1; i=20; i+)printf(%12ld %12ld ,f1,f2);if (i%2=0) printf(n);f1=f1+f2;f2=f2+f1; ,4、中止循环语句 (1) break语句 一般形式:break; 注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。 (2) continue语句 一般形式:continue;continue语句和break语句的区别

13、:continue语句只结束本次循环,而不是终止整个循环的执行。,四、实现单循环结构的语句,例6 从键盘上输入任意个数,统计其中偶数的个数,如果输入中有-1则结束输入。,输入:12 45 37 24 89 -1偶数个数是:2,四、实现单循环结构的语句,#include void main( ) int j=0,k=0;printf(“输入n个整数: “);while(k!=-1)scanf(“%d“,假(0),开始,结束,k!=-1?,提示信息,真(非0),j=0,k=0,j+,输入一个数,k=-1?,k是偶数?,输出一个数,真(非0),真(非0),假(0),假(0),下面几种都是合法的形式:

14、(1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( );,五、循环结构的嵌套,综合例1打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。,程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。,五、循环结构的嵌套,#include void main() int i,j,k,n;printf(“water flowernumber is:“);for(n=100;n1000;n

15、+)i=n/100; /*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if (i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(“%-5d“,n); ,五、循环结构的嵌套,综合例2 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。,程序分析:采取逆向思维的方法,从后往前推断。,五、循环结构的嵌套,思考题 1一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。,五、循环结构的嵌套,思考题 2一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?,五、循环结构的嵌套,思考题 3打印以下图形:*,五、循环结构的嵌套,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1