《C语言ch6PPT课件》由会员分享,可在线阅读,更多相关《C语言ch6PPT课件(23页珍藏版)》请在金锄头文库上搜索。
1、第六章第六章 循环控制循环控制3 3种形式:种形式: 1.while1.while循环结构循环结构 格式:格式:while (while (条件表达式)条件表达式) 循环体循环体 2.do while 2.do while 循环结构循环结构 格式:格式:do do 循环体循环体 while ( while (条件表达式)条件表达式) 3.for3.for循环结构循环结构 格式:格式:for(for(循环变量增值以及条件判断)循环变量增值以及条件判断) 循环循环体体 2021/3/91while循环结构循环结构While 结构语句结构语句 格格 式:式: while (条件表达式)条件表达式)
2、语句集语句集 ;main() int num=0; while(num=1) num +; printf(“%dn”, num); 定定 义:义: 每次判断条件表达式是每次判断条件表达式是否为否为1,为,为1进入循环体,进入循环体,开始执行开始执行“语句集语句集”,而,而后再进行判断,直到条后再进行判断,直到条件表达式的值为件表达式的值为 0 时结时结束循环束循环1 12 22021/3/92循环结构语句循环结构语句While 结构语句结构语句 main( )main( ) int n=0; int n=0; while(n+ =1) while(n+ =1) printf(“*%dn”,n)
3、; printf(“*%dn”,n); printf(“*%dn”,n); printf(“*%dn”,n); *1*1*2*2*3*32021/3/93循环结构语句循环结构语句While 结构语句结构语句 main( ) int n=0; while(+n =1) printf(“*%dn”,n); printf(“*%dn”,n); *1*1*2*2main() int n=0; while(+n) =1) printf(“*%dn”,n); printf(“*%dn”,n); 2021/3/94循环结构语句循环结构语句While 结构语句结构语句 #includemain( ) char
4、 ch; while(ch=getchar( )!=EOF) putchar(ch) ;输入的字符不是结束字符则输出输入的字符不是结束字符则输出注:注: EOFEOF表示结束数据的输入,键盘输入时用表示结束数据的输入,键盘输入时用ctrl+zctrl+z代表代表EOFEOF,即表示数据的输入结束。,即表示数据的输入结束。2021/3/95循环结构语句循环结构语句While 结构语句结构语句 分分 析:析:1.1.男人搬男人搬3636块砖需块砖需9 9人人, , 取值范围:取值范围:08082.2.女人搬女人搬3636块砖需块砖需1212人人, , 取值范围:取值范围:0110113.3.小孩搬
5、小孩搬3636块砖需块砖需7272人人, , 取值范围:取值范围:03603601280 12110 1236manwomanchildren排列组合分析排列组合分析3636块砖块砖3636人搬,男搬人搬,男搬4 4,女搬,女搬3 3,小孩一次半块砖,小孩一次半块砖2021/3/96循环结构语句循环结构语句While 结构语句结构语句 main( ) int m, w , c; while(m=8) w =0; while(w =11) c = 36 - m - w ; if(4.0*m + 3.0*w + c/2 = 36) printf(“men:%dt women%dt”,m,w); p
6、rintf(“children%d”,c); w+; men+; 1.男人:男人:08个个2.女人:女人:011个个3.小孩:小孩:036个个2021/3/97循环结构语句循环结构语句While 结构语句结构语句 int gcd(int x, int y ) int r ; while( y != 0) r = x%y; x = y; y = r; return(x);求两个数的最大公约数求两个数的最大公约数 2021/3/98dowhile循环循环doWhile 结构语句结构语句 格格 式:式: do do 语句集语句集 ; while ( while (条件表达式)条件表达式)#inclu
7、demain( ) char ch; do ch=getchar( ); putchar(ch); While(ch!=EOF);定定 义:义: 先执行一次先执行一次“语句集语句集”,而后判断条件表达,而后判断条件表达式是否为式是否为1 1,为,为1 1进入继进入继续循环执行,直到条件续循环执行,直到条件表达式的值为表达式的值为 0 0 时结时结束循环束循环2021/3/99for循环结构语句循环结构语句for 结构语句结构语句 格式:格式: for( for(循环变量赋值语句;循环条件;循环变量增循环变量赋值语句;循环条件;循环变量增值)值) 循环体语句循环体语句 ; int Sum_all
8、(int n ) int sum=0, i; for( i=1;i=n ; i+) sum+=i ;for(sum=0, i=1; i=n ; sum+=i, i+);int Sum_all(int n ) int sum=0, i=1; while( i=n) sum+=i ; i+; 2021/3/910循环结构语句循环结构语句for 结构语句结构语句 1.“1.“循环变量赋值语句循环变量赋值语句”可以省略,但是后面的分可以省略,但是后面的分号不能省略,保证号不能省略,保证for( ; ; )for( ; ; )语句内有两个分号语句内有两个分号int Sum_all(int n ) int
9、 sum=0, i; i=1; for( ;i=n ; i+) sum+=i ;int Sum_all(int n ) int sum=0, i; for( i=1;i=n ; i+) sum+=i ;2021/3/911循环结构语句循环结构语句for 结构语句结构语句 2.“2.“循环变量增值循环变量增值”语句可以省略,但是前面的语句可以省略,但是前面的分号不能省略,保证分号不能省略,保证for( ; ; )for( ; ; )语句内有两个语句内有两个分号分号int Sum_all(int n ) int sum=0, i; for( i=1;i=n ; i+) sum+=i ;for( i
10、=1;i+ + =n ;);) sum+=i ;for( i=1;+ +i =n ;);) sum+=i ;区区 别:别:for( i=1;i=n ;);) sum+=i ; i+;2021/3/912循环结构语句循环结构语句for 结构语句结构语句 3.“3.“循环条件循环条件”语句决语句决不不 可以省略,否则循可以省略,否则循环无终止进行下去环无终止进行下去int Sum_all(int n ) int sum=0, i; for( i=1; i+) sum+=i ;4.“4.“循环变量赋值循环变量赋值”语句以语句以及及“循环变量增值语句循环变量增值语句”可可以同时省略,但是以同时省略,但
11、是for( ; ; for( ; ; ) )语句内的语句内的两个分号两个分号 决不能决不能省略省略 int sum=0, i=1; for( ;i=100;);) sum+=i ; i+; 2021/3/913循环结构语句循环结构语句for 结构语句结构语句 int sum, i;for( sum=0, i=1;i=100;i+) sum+=i ;for( ; ; )for( ; ; )语句的多种编写格式语句的多种编写格式int m, n,sum;for( m=100, n=1;n=m;m-,n+) sum+=m+n ;for( m=100, n=2;n=m;m-=2,n+=2) sum+=m
12、+n ;2021/3/914循环结构语句循环结构语句for 结构语句结构语句 for( i=0;(t=getchar( )!=n;i+=t, putchar( t )for( ; ; )for( ; ; )语句的多种编写格式语句的多种编写格式for( i=0;(t=getchar( )!=n;i+=t, printf(“%c”,t )i=0;While(t =getchar( )!=n) i+ = t; printf(“%c”, t );2021/3/915循环结构语句循环结构语句for( ; ; )语句嵌套使用语句嵌套使用求求100200100200之间的全部素数:之间的全部素数:main(
13、 ) int m, k, i, n=0; for( m=101; m=200; m+=2) k=sqrt(m); for( i=2; i=k+1) printf(“%d”,m); n+; if(n%10=0) printf(“n”); printf(“已经全部找到已经全部找到n”); 2021/3/916break、continue语句语句Break和和continue语句语句 breakbreak语句:语句:在循环体结构语句内用在循环体结构语句内用来提前结束整个循环来提前结束整个循环for( r=1;r100) break; printf(“%f”, area);continuecontin
14、ue语句:语句:在循环体结构语句内用来在循环体结构语句内用来结束本次循环,但继续执结束本次循环,但继续执行下次循环行下次循环for( n=100; n=100; n+) if(n%3=0) continue; printf(“%d ”, n);if(n%3!=0)printf(“%d ”,n);2021/3/917for循环举例循环举例for 结构语句结构语句 int prime(int n ) int m; for( m=2;m=n/2 ;m+) if(n%m=0) return(0); return(1);验证一个正数是否为素数验证一个正数是否为素数思思 路:路:在在 2 , n/2 2
15、, n/2 区间区间内能否找到一个整数内能否找到一个整数m m能将能将n n整除整除改改 进:进: 2 , n/2 2 , n/2 区间缩小为区间缩小为 2 , 2 , 2021/3/918for循环举例循环举例for 结构语句结构语句 main( ) int n=10, sum=0,m; for( m=0;m=5 ;m+) switch ( m ) case 0 : n-; case 1 : n+; case 2 : n+; case 3 : n+; default : sum+=n ; printf(“sum=%d”, sum);for for 与与switch caseswitch ca
16、se的嵌套的嵌套m=3n=18sum=52m=4n=18sum=70m=5n=18sum=88m=0n=12sum=12m=1n=15sum=27m=2n=17sum=342021/3/919兔子繁殖兔子繁殖循环实现循环实现for 结构语句结构语句 兔子繁殖的迭代算法兔子繁殖的迭代算法1, 1, 2, 3, 5, 8, 13, 21,34 第第1次:次: F1 F2 F第第2次:次: F1 F2 F第第3次:次: F1 F2 F第第4次:次: F1 F2 F第第5次:次: F1 F2 F第第6次:次: F1 F2 F第一月第二月第三月第四月第五月第六月第七月第八月第九月 2021/3/920兔
17、子繁殖兔子繁殖循环实现循环实现for 结构语句结构语句 void sum(int n ) int m; long F,F1=1,F2=1; for( m=3;m=n;m+) F = F1 + F2; F1 = F2; F2 = F; printf(“%ldt”, F ) ; return;兔子繁殖的迭代算法兔子繁殖的迭代算法M:第第m个月个月N:待输出兔待输出兔子数量的总子数量的总月数月数2021/3/921循环结构语句比较循环结构语句比较各种循环结构比较各种循环结构比较 1.1. 四种循环可以相互替换,但绝对不提倡用四种循环可以相互替换,但绝对不提倡用goto语句语句2.2. while以及
18、以及do while语句循环变量要在循环前完成赋语句循环变量要在循环前完成赋值,值,for语句可以在第一个表达式中完成语句可以在第一个表达式中完成3. 3. for语句功能最强,可以代替其他几个循环语句语句功能最强,可以代替其他几个循环语句4. 4. while、dowhile以及以及for循环都可以用循环都可以用break语句中语句中断整个循环,用断整个循环,用 continue 语句仅仅结束本次循环,但语句仅仅结束本次循环,但是对于是对于if以及以及goto语句不能用语句不能用break和和continue语句语句2021/3/922放映结束 感谢各位的批评指导! 谢谢 谢!谢!让我们共同进步2021/3/923