章节循环控制.ppt

上传人:本田雅阁 文档编号:2707185 上传时间:2019-05-06 格式:PPT 页数:33 大小:231.51KB
返回 下载 相关 举报
章节循环控制.ppt_第1页
第1页 / 共33页
章节循环控制.ppt_第2页
第2页 / 共33页
章节循环控制.ppt_第3页
第3页 / 共33页
章节循环控制.ppt_第4页
第4页 / 共33页
章节循环控制.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《章节循环控制.ppt》由会员分享,可在线阅读,更多相关《章节循环控制.ppt(33页珍藏版)》请在三一文库上搜索。

1、,第 章 循环控制,6.1 goto 语句 6.2 while 、do-while 语句 6.3 for 语句 6.4 循环的嵌套 6.5 break语句和continue语句,6.1 goto 语句,goto语句被称为无条件转向语。,格式:,goto 语句标号;,功能:,遇到 goto语句,就转到语句标号处继 续执行。多与if语句配合实现循环。,一般说来求和分为两种情况:数据有规律与无规律。,1、设一个变量sum作为累加器并赋初值0; 2、输入数据或利用某变量自动产生一个数据; 3、利用赋值语句先算右边表达式的特点,执行语句: sumsum+变量;,求累加和。,例程 6-1 :,算法:,vo

2、id main ( ) int i=1, sum=0; L: if ( i=100 ) / 判断结束条件 sum=sum+i; i+; goto L; printf(”sum=%d“, sum); ,结果:sum=5050,void main ( ) int sum=0, i=0; L: sum=sum+i; i + +; if (i=100) goto L; printf (“%d“ , sum); ,算法二:,建议:尽可能的不用goto语句,以免破坏程序的结构化。,void main() int x, sum=0; L1: scanf(“%d”, ,算法三:,-999是结束标志,只要是不参

3、与运算的数均可作为结束标志。,C语言一般采用三种形式循环 1. while 语句 2. do while 语句 3. for语句,1. while语句格式:,while( 表达式 ) 1句或复合句,do 1句或复合句 while( 表达式),do-while格式语句:,6.2 循环结构,while( 表达式 ) 多条语句 ,do 多条语句 while( 表达式),2. 流程图:,while语句: 先判断,后执行, 最小循环次数=0。,3.特点:,dowhile语句: 先执行,后判断, 最小循环次数1,while(i=100) sum+=i; i+; ,do sum+=i; i+; while(

4、i=100),例如:,1. 循环体中至少应有一条能改变表达式值的语句,使循环进行若干次后,表达式值为假结束循环,否则将造成无限循环。,2若不改变循环控制条件,可利用break或if-goto语句强行退出本层循环。,4.说明:,#include void main( ) char ch ; int num=0, chn=0 ; while( ( ch=getchar() ) !=n ) if ( ch= 0 ,例程6-2:,分别统计输入的字符串中数字和其他字符的个数。,从键盘输入一个数,将其数字按逆序输出。,void main() int x,d; printf(“输入一个正整数:”); sca

5、nf(“%d”, ,例程6-3 :,格式:,一种形式更为灵活的循环语句。,for( 初始表达式; 条件表达式; 循环表达式 ) n条语句 ,6.3 for语句,流程图:,用for语句求累加和:,for ( i=1; i=100; i+) sum+=i;,for语句与while、do-while互换用, 但for直观、简单、方便。,i=1; while(i=100) sum+=i; i+,i=1; do sum+=i; i+; while( i=100 ),for语句中的三个表达式均可部分或全部省略, 但须保留分号; 见P.111。,for语句中条件测试总是在循环开始时进行。,x=10; for

6、 (y=10; y!=x; +y) / for循环一次也不执行 printf(“%d”,y);,说明:,例如:,条件表达式是任意合法的C表达式,一般不 可省略, 否则为无限循环。,for ( i=1 ; ; i+ ) sum=sum+i ;,while (1) sum=sum+i ; i+ ; ,无限 循环,例如:,循环表达式亦可省略, 但在循环体中必须有语句 修 改循环变量,能正常结束循环; 赋值表达式 可移至for语句之前,不影响循环执行。,sum=0; i=1; for ( ; i=100 ; ) sum=sum+i; i+; ,for ( i=0; (c=getchar( )!=n;

7、i+=c );,条件表达式,又如:,例如 :,void main( ) int I, j=0; for( I=1; I100; I+ ) if ( I%2 | I%3 ) printf(“%4d”,i); if(+j%5=0) printf(“n”); ,例程6-4 :,输出 1,99不能被2或3整除的数,按5个数一行的格式排列。,循环结构例程,1、定义变量:n=1(分母),s=1.0(分子), pi=1.0 (和), t (分式)。 2、 n+=2; s=-s; t= s/n; pi+=t;,直到| t |=1e-6 ),用 /4 1- + + 公式求pi的近似值。直到最后一项的绝对值1e-

8、6为止。,例程6-5:,算法:,#include void main() int n=1 ; float t, s=1.0, pi=1.0; while( fabs(t)=1e-6 ) pi=pi+t; n=n+2; s= -s; t=s/n; pi=pi*4; printf(“pi=%10.6fn“,pi); ,void main() int i=1,n=1; float t, pi=1.0; for( ; i; i+) n+=2; t=1.0/n; if( t1e-6 ) break; if (i%2) pi-=t ; else pi+=t; pi=pi*4; printf(“pi=%fn

9、“,pi); ,与if语句相同, 当循环体中又包含了另一个完整的循环语句时循环嵌套。,C语言的循环结构, 均可以相互嵌套:,例如 : do while() for( ) while(),for( ) for( ) ; while( ) ; ,6.4 循环的嵌套,输出1*9的乘法表。 输出9*9的乘法表。 a=1; for ( a=1; a=9; a+) for(b=1;b=9;b+) for(b=1;b=9;b+) printf(“%d”,a*b); printf(“%d”,a*b); printf(“n”); ,由上例看出,循环嵌套的执行过程是: 外循环走一次,内循环走一圈。,例如 :,例程

10、 6-6 :求一个班某门课的平均分(30人)。 求 五个班某门课的平均分,30人/班。,s=0; for(n=1;n=30;n+) scanf(“%d,”,for( c=1;c=5;c+) s=0; for(n=1;n=30;n+) scanf(“%d”, ,例程 6-7 :求累乘n!,1、设一个变量作为累乘器(存放累乘的积),且 设初值为1(t1;) 2、执行t=t *x;,void main() int t=1, j; for(j=2; j=6; j+) t=t*j ; ,算法:,求 1!+2!+3!+4!+5!+6!,void main() int I, j, t, sum=1; for

11、(I=2;I=6;I+) t=1; for( j=2; j=I ; j+) t=t*j; sum=sum+t; ,viod main() int I, t=1, sum=1; for( I=2; I=6; I+) t=t*I; sum=sum+t; ,算法1:,算法2:,例程6-8: 百鸡问题。有100元钱,想买100只鸡,其中公鸡5元/只 ,母鸡3元/只,小鸡3只/元,求:公鸡、母鸡、小鸡各买多少只。 解:设公鸡为x只、母鸡为y只、小鸡为z只。 则有 x+y+z=100 5x+3y+z/3=100 根据题意 x : 1 20 ; y : 133 z=3*(1005*x3*y ),void m

12、ain() int x, y, z , n=0 ; for( x= 1; x=20 ; x+ ) for( y=1; y=33 ; y+ ) z = 3*(100-5*x-3*y ); if( x+y+z= =100) n+; printf(“%d,%d,%d”, x, y, z); printf(“n=%d”,n); ,例程6-9:出5道两位数的加法题,做对1题得10分, 输出得分及做错的题数。,算法:,1、利用随机函数rand()产生2个整数,并判断它们 是否为2位整数,若否,需重新产生数。,2、显示需计算的题目,并输入解题的结果; 3、根据结果判断是否正确,若正确,则加10分,然 后进入

13、下一轮循环; 见6-9.c,.,break 语句:只能用在switch结构和循环结构中, 使程序跳出switch结构或本层循环。,break特别适用于循环次数不确定的情况,进入循环后,利用一个if语句配合使用break,以实现程序在指定条件成立后提前结束循环的目的。,6.5 break 和 contiune语句,pi =3.14159; for(r=1; r100) break; printf (“%f“, area);,例程 6-10: 计算圆的面积r2, 半径取1, 2, 3, 4, 当 面积100时结束。,continune语句: 用来结束本次循环,在while, do-while中,使流程直接跳到循环控制条件的测试部分, 然后决定循环是否继续;在for中先执行表达式3的求值,再执行表达式2的测试,然后决定循环是否继续。,例程6-11: 打印100200中不能被3整除的数。,void main ( ) int n; for ( n=100; n=200; n+) if ( n%3= =0 ) /*n能被3整除*/ continue; else printf (“%d“, n); ,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1