第五章 循环结构程序设计.ppt
《第五章 循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第五章 循环结构程序设计.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 第一节第一节 循环的基本概念循环的基本概念 第二节第二节 while语句语句 第三节第三节 do-while语句语句 第四节第四节 for语句语句 第五节第五节 几种循环的比较几种循环的比较 第六节第六节 循环的嵌套循环的嵌套 第七节第七节 break和和continue语句语句 第八节第八节 应用实例应用实例2 25.1 循环循环的概念的概念什么是循环?什么是循环?为什么要使用循环?为什么要使用循环?循环是有规律的重复操作循环是有规律的重复操作。将复杂问题将复杂问题分解分解为简单的操作过为简单的操作过程,程序只对简单过程描述,这些过程的多次程,程序只对简单过程描述,这些过程的多次重复重复
2、就可完成对问就可完成对问题的求解。题的求解。一、循环问题一、循环问题问题问题1 1:求:求1+2+3+1+2+3+100+100的和。的和。问题问题2 2:找出找出整整数数1110001000中中能同时被能同时被3 3和和7 7整除的数。整除的数。l if-goto 循环循环l while循环循环l for循环循环l do while循环循环 先判断后循环先判断后循环 (当型循环)(当型循环)先循环先循环后后判断判断 (直到型循环)(直到型循环)3 3l 循环变量的初始循环变量的初始值值l 循环进入条件循环进入条件l 循环体循环体l 循环变量的循环变量的增值增值循循环环的的基基本本要要素素循环
3、变量的初值循环变量的初值满足条件则执行循环体满足条件则执行循环体重复执行的语句重复执行的语句循环变量的改变循环变量的改变,进一步测进一步测试条件试条件5.1 5.1 循环的概念循环的概念(完完)二、循环结构二、循环结构循循环体体N条件条件Y入口入口出口出口条件条件NY循循环体体先循环后判断先循环后判断先判断后循环先判断后循环4 4 5.2 5.2 无条件转向语句无条件转向语句二、标号语句二、标号语句格式:标号标识符:语句格式:标号标识符:语句功能:指示语句在程序中的位置,作为转移语句的转移功能:指示语句在程序中的位置,作为转移语句的转移目标目标 一、一、goto语句(无条件转向语句)语句(无条
4、件转向语句)格式:格式:goto 标号标识符标号标识符功能:执行该语句时,将程序流程无条件地转向指功能:执行该语句时,将程序流程无条件地转向指定定标号所在的语句标号所在的语句继续执行。继续执行。标号由数字,字母,下划线组成标号由数字,字母,下划线组成goto loop;loop:if(x=y)5 5 gotogoto 语句标号语句标号语句标号语句标号;语句标号语句标号语句标号语句标号:语句标号语句标号语句标号语句标号:gotogoto 语句标号语句标号语句标号语句标号;或或或或scanf(“%d,%d”,&x,&y);loop:if(x=y)t=x;x=y;y=t;goto loop;6 6m
5、ain()int k,sum=0;k=1;loop:if(k=100)sum=sum+k;k+;goto loop;printf(“%d”,sum);5.2 5.2 无条件转向语句无条件转向语句例:求例:求例:求例:求1 1100100的累计和的累计和的累计和的累计和7 71.格式:格式:2.功能:功能:先判断先判断表达式表达式的值,若为非零,的值,若为非零,重复重复执行循环执行循环体语句,再判断体语句,再判断直到表达式的值为零,退出循环体。直到表达式的值为零,退出循环体。即:测试即:测试-执行执行-测试测试-执行执行-5.2 5.2 用用whilewhile设计循环结构设计循环结构100wh
6、ile(while(表达式表达式表达式表达式)循环体语句;循环体语句;循环体语句;循环体语句;8 8l特点:先判断表达式,后执行循环体特点:先判断表达式,后执行循环体l说明:说明:循环体有可能一次也不执行循环体有可能一次也不执行循环体可为任意类型语句循环体可为任意类型语句下列情况,退出下列情况,退出while循环循环l条件表达式不成立(为零)条件表达式不成立(为零)l循环体内遇循环体内遇break,return,goto无限循环无限循环:while(1)循环体循环体;9 9语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例例例例】用用用用whilewhile
7、whilewhile语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include main()main()intint i=1,sum=0;i=1,sum=0;while(i=100)while(i=100)sum+=i;sum+=i;i+;i+;printfprintf(sum=%(sum=%dndn,sum);,sum);循环初值循环初值循环初值循环初值循环终值循环终值循环终值循环终值循环条件循环条件循环条件循环条件循环体循环体循环体循环体循环变量增值循环变量增值循环变量增值循环变量增值运行结果:运行结果:运行结果:
8、运行结果:sum=5050sum=50501010main()int number=0;while(number=1)number+;printf(“%dn”,number);结果:结果:1 2number初值为初值为 0,条件为条件为number=11.number为为0,满足条件满足条件 number为为0,然后自增为然后自增为1输出输出number 12.number为为1,满足条件满足条件 number为为1,然后自增为然后自增为2输出输出number 23.number为为2,不满足条件不满足条件5.2 5.2 用用whilewhile设计循环结构设计循环结构(续续)11113.3.
9、说明说明:(1 1)当循环体中语句多于一)当循环体中语句多于一条时,用条时,用 ,否则,循环只,否则,循环只对第一个语句;起作用对第一个语句;起作用.(2 2)循环体内部必须有实现)循环体内部必须有实现对循环变量增值的语句,否对循环变量增值的语句,否则,易出现则,易出现“死循环死循环”.(3 3)条件表达式要有括号条件表达式要有括号,后面不加分号后面不加分号.(4 4)注意条件的边界值注意条件的边界值.例题:求例题:求 1+2+3+n=10000的最大的的最大的n。main()int a,k;a=k=0;while(a=10000)+k;a+=k;printf(“1+2+3.+%d=%dn”,
10、k-1,a-k);5.2 5.2 用用whilewhile设计循环结构设计循环结构(续续)1212【例例例例】显示显示显示显示1 1 1 110101010的平方的平方的平方的平方#include#include main()main()intint i=1;i=1;while(i=10)while(i=10)printfprintf(%d*%d=%(%d*%d=%dndn,i,i,i*i);,i,i,i*i);i+;i+;运行结果:运行结果:运行结果:运行结果:1*1=11*1=12*2=42*2=43*3=93*3=94*4=164*4=165*5=255*5=256*6=366*6=36
11、7*7=497*7=498*8=648*8=649*9=819*9=8110*10*1010=100=100语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C1313【例例例例】求两个正整数的最大公因子。求两个正整数的最大公因子。求两个正整数的最大公因子。求两个正整数的最大公因子。我们采用我们采用我们采用我们采用EuclidEuclid(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(欧几里德)算法来求最大公因子,其算法是:(1)(1)输入两个正整数输入两个正整数输入两个正整数输入两个
12、正整数mm和和和和n n。(2)(2)用用用用mm除以除以除以除以n n,余数为,余数为,余数为,余数为r r,如果,如果,如果,如果r r等于等于等于等于0 0,则,则,则,则n n是最大公因子,算法结束,否则是最大公因子,算法结束,否则是最大公因子,算法结束,否则是最大公因子,算法结束,否则(3)(3)。(3)(3)把把把把n n赋给赋给赋给赋给mm,把,把,把,把r r赋给赋给赋给赋给n n,转,转,转,转(2)(2)。#include#include void main()void main()intint m,n,r;m,n,r;printfprintf(Please input t
13、wo positive integer:);(Please input two positive integer:);scanfscanf(%(%d%dd%d,&m,&n);,&m,&n);while(n!=0)while(n!=0)r=m%n;r=m%n;/求余数求余数求余数求余数 m=n;m=n;n=r;n=r;printfprintf(Their greatest common divisor is%(Their greatest common divisor is%dndn,m);,m);运行结果:运行结果:运行结果:运行结果:Please input two positive int
14、eger:24 56Please input two positive integer:24 56 Their greatest common divisor is 8Their greatest common divisor is 8语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C14145.3 5.3 用用do-whiledo-while设计循环结构设计循环结构1.格式:格式:2.功能:功能:先执行循环体先执行循环体,再判断表达式的值,若为非零,再判断表达式的值,若为非零,重复执行循环体语句,再判断重复执行循环体语句,再判断.直到表达式的值为直到表达式的值
15、为零,退出循环体零,退出循环体即:执行即:执行-测试测试-执行执行-测试测试-条件条件NY循循环体体do do do do 循环体语句;循环体语句;循环体语句;循环体语句;while(while(while(while(表达式表达式表达式表达式););););1515语语言言程程序序设设计计教教程程 第第六六章章 循循环环结结构构程程序序设设计计C【例例例例】用用用用do_whiledo_whiledo_whiledo_while语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void
16、 main()intint i=1,sum=0;i=1,sum=0;do do sum+=i;sum+=i;i+;i+;while(i=100);while(i=100);printfprintf(sum=%(sum=%dndn,sum);,sum);运行结果:运行结果:运行结果:运行结果:sum=5050sum=50501616 main()int n=1,s=0,x;scanf(%d,&x);do s=s+n;do s=s+n;n+;n+;while(n=x);while(n=x);printf(s=%dn,s);5.3 5.3 用用do-whiledo-while设计循环结构设计循环结构
17、(续续)n=xn=xs=s+ns=s+nYn+开始开始初始化初始化n,sn,sN结束结束输入输入x x输出输出s s问题:输入一个问题:输入一个x,求,求1+2+3+.+x1717 main()int s=0,x;scanf(%d,&x);while(x=10)s=s+x;x+;printf(s=%dn,s);main()int s=0,x;scanf(%d,&x);do s=s+x;x+;while(x=10);printf(s=%dn,s);输入:输入:12输出:输出:s=12循环至少循环至少执行一次执行一次循环没有循环没有被执行被执行输入:输入:12输出:输出:s=03、whilewhi
18、le与与do whiledo while的比较的比较 5.3 5.3 用用do-whiledo-while设计循环结构设计循环结构(完完)1818例例 while和和dowhile比较比较#include main()int i,sum=0;scanf(%d,&i);do sum+=i;i+;while(i=10);printf(%d,sum);main()int i,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%d,sum);输入输入11,sum11输入输入11,sum0输入输入11?1919计算计算表达式表达式1 1初值初值;计算计算表达式
19、表达式2 2并判断并判断,0 0 时跳出循环,非时跳出循环,非0 0 时执行循环;时执行循环;当表达式当表达式2 2非非0 0,执行循环体语句,计算,执行循环体语句,计算表达式表达式3 3增量增量;自动转到第二步自动转到第二步(计算计算表达式表达式2)2).继续执行。继续执行。forfor语句语句 初值表达式初值表达式1 条件表达式条件表达式2 增量表达式增量表达式3for(表达式表达式1;表达式表达式2;表达式表达式3)语句组语句组 5.4 5.4 用用forfor语句设计循环结构语句设计循环结构1.格式格式:2.功能功能:main()int n,s;for(n=1;n=100;n+)s=s
20、+n;printf(“%dn”,s);变量的增量变量的增量循环体循环体变量的初值变量的初值循环条件循环条件2020 1.1.表达式表达式1,1,表达式表达式2 2和表达式和表达式3 3均可缺省均可缺省for(;n100;n+)缺省缺省e1,n 应在循环之前赋初值应在循环之前赋初值 for(n=0;n+)缺省缺省e2,造成死循环,不可使用!造成死循环,不可使用!for(n=0;n100;)缺省缺省e3,n增量应在循环体内进行增量应在循环体内进行for(;)缺省缺省e1,e2,e3 死循环死循环for(;n100;)缺省缺省e1,e3分号始分号始终不能缺省!不能缺省!3.说明说明不可用不可用 5.
21、4 5.4 用用forfor语句设计循环结构语句设计循环结构(续续)2121for(初值初值;判断判断;增量增量)语句;语句;for(初值初值;判断判断;增量增量)复合语句复合语句;for(初值初值;判断判断;增量增量);2.2.表达式表达式1 1和和表达式表达式3 3可是与初值、增量无关的逗号表达式可是与初值、增量无关的逗号表达式for(s=0,n=1;n=100;s=s+n,printf(“%d”,s)n+;for(s=0;n100;s=s+n,n+)printf(“%d”,s);求累加和求累加和n的初值在的初值在for之前之前完成完成增量在增量在for之外完成之外完成forfor语句的形
22、式:语句的形式:5.4 5.4 用用forfor语句设计循环结构语句设计循环结构(续续)2222 main()int n=1,s=0,x;scanf(%d,&x);loop:if(n=x)s=s+n;n+;goto loop;printf(s=%dn,s);10s=55100s=5050255s=32640while(n=x)while(n=x)for(;n=x;)for(;n=x;)if-gotoWhile(n=x)While(n=x)for(;n=x;)循环结束循环结束5.4 5.4 用用forfor语句设计循环结构语句设计循环结构(续续)n=xn=xs=s+ns=s+nn+开始开始初始化
23、初始化n,s,xn,s,xN结束结束输入输入x xY输出输出s s2323main()int n,s;for(n=1;n=10;n+=2)printf(n=%dn,n);main()int n,s;for(n=1;n=10;n+=2);printf(n=%dn,n);以下以下程序的输出结果程序的输出结果输出结果:输出结果:n=11输出结果:输出结果:n=1n=3n=5n=7n=9无循环体无循环体 循环体循环体;特点:先判断后循环特点:先判断后循环printf(n=%dn,n);5.4 5.4 用用forfor语句设计循环结构语句设计循环结构(完完)2424例:#include main()in
24、t i=0;for(i=0;i10;i+)putchar(a+i);运行结果:abcdefghij例:#include main()int i=0;for(;i10;i+)putchar(a+i);例:#include main()int i=0;for(;i10;)putchar(a+(i+);例:#include main()int i=0;for(;i10;putchar(a+i),i+);25255.5 5.5 几种循环的比较几种循环的比较1、C中的三种循环语句中的三种循环语句while(),do-while(),for()都可由表达式控制重复执行一个循环体,都可以用来都可由表达式控制
25、重复执行一个循环体,都可以用来解决同一个问题,一般情况下,可以相互代替。解决同一个问题,一般情况下,可以相互代替。2、三种循环各有特点、三种循环各有特点:1)当循环次数及条件在程序运行中才能确定时,选用当循环次数及条件在程序运行中才能确定时,选用while()或或do-while()语句语句两者区别两者区别:while()顶部测试顶部测试,可能一次也不执行,可能一次也不执行 do-while()底部测试底部测试,至少执行一次,至少执行一次26265.5 5.5 几种循环的比较几种循环的比较(完完)(2)如果初值,条件明显,循环次数已给出,选用如果初值,条件明显,循环次数已给出,选用for()语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 循环结构程序设计 第五 循环 结构 程序设计
限制150内