《循环控制结构》PPT课件.ppt
《《循环控制结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环控制结构》PPT课件.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 循环循环是计算机解题的一个重要特征。由于计算机运是计算机解题的一个重要特征。由于计算机运 算速度快,最适宜做算速度快,最适宜做重复性重复性的工作。当我们在进行程序的工作。当我们在进行程序 设计时,总是要把复杂的不易理解的求解过程转换为容设计时,总是要把复杂的不易理解的求解过程转换为容 易理解的操作的多次重复,从而降低了问题的复杂度,易理解的操作的多次重复,从而降低了问题的复杂度,同时也减少程序书写及输入的工作量。同时也减少程序书写及输入的工作量。oosum=1+2+3+4+100oo输出如下输出如下:oo输出所有输出所有210000的素数的素数.*循环结构程序设计循环结构程序设计 循环
2、是在循环条件为真时计算机反复执行的一组指令(循环体)。循环控制通常有两种方式:计数控制事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。标记控制事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。实现循环结构的语句do/whiledo/while实现循环结构的语句实现循环结构的语句if/gotoif/gotobreakbreakwhilewhilefor()for()continueconti
3、nueC语言中可用以下语句构成循环:o if gotoo whileo do whileo for其中if goto是通过编程技巧(if语句和goto语句组合)构成循环功能。而且goto语句将影响程序流程的模块化,使程序可读性变差,所以结构化程序设计主张限制goto语句的使用。其他三种语句是C语言提供的循环结构专用语句。6.1 if/goto 6.1 if/goto 语句语句语句语句语句功能:语句格式:语句标号:语句标号:语句;语句;if(if(表达式表达式)goto)goto 语句标号;语句标号;当(表达式)的值为非零时则当(表达式)的值为非零时则重复重复执行执行“语句标号语句标号”后面的语
4、句。后面的语句。标识程序中某标识程序中某 个语句的位置个语句的位置 EXAMPLE6-1:EXAMPLE6-1:EXAMPLE6-1:EXAMPLE6-1:请用请用请用CCC语言实现右侧程序语言实现右侧程序语言实现右侧程序流程图所描述的算法流程图所描述的算法流程图所描述的算法:即:即:即:sum=1+2+3+4+100sum=1+2+3+4+100sum=1+2+3+4+100 设:设:i i 计数器:计数器:i=i+1i=i+1 sumsum 为累加器:为累加器:sum=sum+isum=sum+iBeginBeginsum=0 i=1sum=0 i=1sum=sum+isum=sum+i输
5、出输出sumsumEndEndi=i+1i=i+1Fi=100i=100TBeginBeginsum=0 i=1sum=0 i=1sum=sum+isum=sum+i输出输出sumsumEndEndi=i+1i=i+1Fi=100i=100T main()main()int sum=0,i=1;int sum=0,i=1;sum=sum+i;sum=sum+i;sum+=i;sum+=i;i=i+1;i=i+1;if if(i=100)(i00T输入输入 x xn+n+i100i100F111、设计算法XX0)if(x0)printf(“%d,%dn”,p,n);printf(“%d,%dn”
6、,p,n);goto bb;goto bb;bb:bb:p+;p+;p=n=i=0;p=n=i=0;else else If(x0)n+;If(x0)n+;if(i100)if(i100)5.2 while 5.2 while 语句语句语句语句语句功能:语句格式:whilewhile(表达式)(表达式)statements;statements;当表达式的值为当表达式的值为非零时非零时,重复重复statementsstatements。关系关系、逻辑逻辑 赋值赋值表达式表达式 body of loop body of loopo请用while实现 sum=1+2+3+4+100 sum=1+2
7、+3+4+100 main()main()int sum=0,i=1;int sum=0,i=1;sum+=i;sum+=i;While (i=100)While (i=100)printf(“%dn”,sum);printf(“%dn”,sum);i+;i+;while while while while(表达式表达式表达式表达式)BeginBeginsum=0 i=1sum=0 i=1sum=sum+isum=sum+i输出输出sumsumEndEndi=i+1i=i+1Fi=100i=100T main()main()int n=0;int n=0;whilewhile(n3n3)pri
8、ntf(“%d,”,n);printf(“%d,”,n);n+;n+;printf(“%dn”,n);printf(“%dn”,n);0,0,main()main()int n=3;int n=3;whilewhile(n n)printf(“%d,”,printf(“%d,”,n-n-););n=-3;n=-3;printf(“n”);printf(“n”);while(while(n n)printf(“%d,”,printf(“%d,”,n+n+););1,1,2,2,3 33,3,2,2,1,1,-3,3,-2,2,-1,-1,EXAMPLE6-2:EXAMPLE6-2:EXAMPLE
9、6-2:EXAMPLE6-2:n n0 0 1 1 2 2 3 3 2 2 1 1 0 0-3-3-2-2-1-10 0 main()main()int a=1,b=2,c=2,t=0;int a=1,b=2,c=2,t=0;while(while(abab)t=a;a=b;t=a;a=b;b=t;c+;b=t;c+;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,a,b,c);EXERCISES6-2:EXERCISES6-2:EXERCISES6-2:EXERCISES6-2:a a0 02 22 21 1b bc ct t1 12 21 13 3 m
10、ain()main()int x=0,s=0;int x=0,s=0;whilewhile(!x!=0!x!=0)s+=+x;s+=+x;printf(“%d n”,s);printf(“%d n”,s);EXERCISES6-3:EXERCISES6-3:EXERCISES6-3:EXERCISES6-3:1 1x x0 0s=s+(+x);s=s+(+x);s s0 01 11 1 !x!x 从键盘输入从键盘输入100100条整型数据条整型数据,请找出请找出其中最大的数,并指出这个最大的数是其中最大的数,并指出这个最大的数是从键盘第几次输入的。从键盘第几次输入的。要求要求:1:1、用、用N
11、-SN-S图图设计设计算法;算法;2 2、用、用C C语言语言实现实现算法。算法。HOMEWORK6-1:HOMEWORK6-1:HOMEWORK6-1:HOMEWORK6-1:请分别统计在输入的字符串中请分别统计在输入的字符串中 字母、数字和其它字符的个数。字母、数字和其它字符的个数。要求要求:1:1、用、用N-SN-SN-SN-S图图图图设计算法;设计算法;2 2、用、用C C C C语言语言语言语言实现算法。实现算法。HOMEWORK6-2:HOMEWORK6-2:HOMEWORK6-2:HOMEWORK6-2:book12pen5%*#()&book12pen5%*#()&字母字母:7
12、 7数字数字:3 3字符字符:8 8语句功能:6.3 do-while 6.3 do-while 语句语句语句语句语句格式:dodo statements;statements;whilewhile(表达式表达式);当表达式的值为当表达式的值为非零时非零时,重复重复statementsstatements 。body of loop body of loop1+2+3+4+5+100 1+2+3+4+5+100 main()main()int i,sum;int i,sum;do do printf(“%dn”,sum);printf(“%dn”,sum);sum=0;i=1;sum=0;i=
13、1;i+;i+;whilewhile(););sum+=i;sum+=i;whilewhile(i=100i=100););EXAMPLE6-3:EXAMPLE6-3:EXAMPLE6-3:EXAMPLE6-3:main()main()int x;int x;x=-1;x=-1;dodo x=x*x;x=x*x;whilewhile(!x!x););EXERCISES6-4:EXERCISES6-4:EXERCISES6-4:EXERCISES6-4:A)A)是死循环是死循环 B)B)循环执行三次循环执行三次C)C)循环执行一次循环执行一次D)D)有语法错误有语法错误 x=0;x=0;main
14、()main()int x=3;int x=3;dodo printf(“%d,”,x-=2);printf(“%d,”,x-=2);while while(!(-x)!(-x););EXERCISES6-5:EXERCISES6-5:EXERCISES6-5:EXERCISES6-5:A)A)1 1 1 1 B)B)1,-21,-21,-21,-2 C)C)3,0 3,0 D)D)0 0 x x3 3 1 1 0 0-2-2-3-3x=x-2;x=x-2;main()main()int s;int s;s=7;s=7;do do s s=2;=2;while while(s s0 0););
15、printf(“s=%dn”,s);printf(“s=%dn”,s);EXERCISES6-6:EXERCISES6-6:EXERCISES6-6:EXERCISES6-6:s=5s=5请写出请写出右侧程右侧程序的运序的运行结果行结果 main()main()int x,y;int x,y;x=y=0;x=y=0;whilewhile(x20 x0)&(y5)(x0)&(y5););printf(“y=%d x=%dn”,y,x);printf(“y=%d x=%dn”,y,x);请程序的运行结果及循环次数请程序的运行结果及循环次数HOMEWORK6-4:HOMEWORK6-4:HOMEWO
16、RK6-4:HOMEWORK6-4:while语句和用语句和用do-while语句的比较语句的比较:在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。例 while和do-while循环的比较(1)#include (2)#include void main()void main()int sum=0,i;int sum=0,i;scanf(“%d,&i);scanf(”%d,&i);while(i=10)do sum=sum+i;sum=sum+i;
17、i+;i+;while(i=10);printf(“sum=%dn”,sum);printf(“sum=%dn”,sum);运行结果:1 sum=55 再运行一次:11sum=0运行结果:1 sum=55 再运行一次:11sum=11说明:说明:说明:说明:(1)当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。否则,二者结果不相同。语句功能:6.4 for 6.4 for 语句语句语句语句语句格式:forfor(表达式表达式表达式表达式1 1 1 1;表达式表达式表达式表达式2 2 2 2;表达式表达式表达式表达式3 3 3 3)statements;statement
18、s;当表达式当表达式2 2的值为的值为非零时非零时,重复执行重复执行statementsstatements 。forfor(表达式表达式表达式表达式1 1 1 1;表达式表达式表达式表达式2 2 2 2;表达式表达式表达式表达式3 3 3 3)statements;statements;表达式表达式1 1 循环循环初始初始表达式,用于进入循环体前为循环变量赋初值表达式,用于进入循环体前为循环变量赋初值 由由算术算术、赋值赋值、逻辑逻辑和和逗号逗号表达式构成。表达式构成。表达式表达式2 2 循环循环控制控制表达式,用于控制循环体语句的执行次数由表达式,用于控制循环体语句的执行次数由关关 系系表
19、达式或表达式或逻辑逻辑表达式构成表达式构成。表达式表达式3 3 修改循环变量修改循环变量表达式,即每循环一次使得表达式表达式,即每循环一次使得表达式1 1的值的值 就要变化一次。由就要变化一次。由算术算术、赋值赋值、逻辑逻辑和和逗号逗号表达式构成表达式构成。main()main()int n;int n;for(for(n=1n=1;n=10n=10;n+n+)printf(“%d,”,n);printf(“%d,”,n);1 1,2,2,3,3,4,5,6,7,8,9,10,4,5,6,7,8,9,10 forfor(表达式表达式1 1;表达式表达式2 2;表达式表达式3 3)stateme
20、nts;statements;EXAMPLE6-4:EXAMPLE6-4:EXAMPLE6-4:EXAMPLE6-4:main()main()int n,i=100;int n,i=100;for(n=1;n=5;n+)for(n=1;n;n0 0;n-n-)printf(“%d,”,i);printf(“%d,”,i);EXAMPLE6-5:EXAMPLE6-5:EXAMPLE6-5:EXAMPLE6-5:main()main()int x,y;int x,y;for(for(x=0,y=0 x=0,y=0;x+y=50 x+y=50;x+,y+x+,y+)printf(“%3d”,x+y)
21、;printf(“%3d”,x+y);if if(x%5=0 x%5=0)printf(“n”);printf(“n”);EXERCISES6-8:EXERCISES6-8:EXERCISES6-8:EXERCISES6-8:写出右侧写出右侧程序段的程序段的 运行结果运行结果 main()main()int sum,i;int sum,i;for(sum=0,i=1;i=100;i+)for(sum=0,i=1;i=100;i+)sum+=i;sum+=i;printf(“sum=%dn”,sum);printf(“sum=%dn”,sum);main()main()int sum=0,i=1
22、;int sum=0,i=1;do do sum+=i;i+;sum+=i;i+;while(i=100);while(i=100);printf(“sum=%dn”,sum);printf(“sum=%dn”,sum);main()main()int sum=0,i=1;int sum=0,i=1;while(while(i=100i=100)sum+=i;i+;sum+=i;i+;printf(“sum=%dn”,sum);printf(“sum=%dn”,sum);main()main()int sum=0,i=1;int sum=0,i=1;labellabel:if(i=100):i
23、f(i=100)sum+=i;i+;sum+=i;i+;goto goto labellabel;printf(“sum=%dn”,sum);printf(“sum=%dn”,sum);1+2+3+4+5+100 1+2+3+4+5+100 说明:说明:(1)for语句的一般形式中的“表达式1”可以省略,此时应在(2)for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如:for(;i=100;i+)sum=sum+i;执行时,跳过“求解表达式1”这一步,其他不变。(2)如果表达式2省略,即不判断循环条件,循环无终止地(3)进行下去。也就是认为表达式2始终为真。例如:for
24、(i=1;i+)sum=sum+i;它相当于:i=1;while(1)sum=sum+1;i+;图图图图5.75.75.75.7求解表达式1语句求解表达式3(3)表达式3也可以省略,但此时程序设计者应另外设法保证 循环能正常结束。如:for(i=1;i=100;)sum=sum+i;i+;在上面的for语句中只有表达式1和表达式2,而没有表达式3。i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件 如:for(;i=100;)while(i=100)sum=sum+i;sum=su
25、m+i;i+;相当于 i+;在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。(5)3个表达式都可省略,如:for(;)语句 相当于 while(1)语句 即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。如:for(sum=0;i=100;i+)sum=sum+i;表达式3也可以是与循环控制无关的任意表达式。表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环控制结构 循环 控制 结构 PPT 课件
限制150内