C语言循环结构优秀课件

上传人:公**** 文档编号:570074075 上传时间:2024-08-01 格式:PPT 页数:47 大小:481.50KB
返回 下载 相关 举报
C语言循环结构优秀课件_第1页
第1页 / 共47页
C语言循环结构优秀课件_第2页
第2页 / 共47页
C语言循环结构优秀课件_第3页
第3页 / 共47页
C语言循环结构优秀课件_第4页
第4页 / 共47页
C语言循环结构优秀课件_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《C语言循环结构优秀课件》由会员分享,可在线阅读,更多相关《C语言循环结构优秀课件(47页珍藏版)》请在金锄头文库上搜索。

1、第六章1l 主要内容主要内容6.1 6.1 概述概述6.2 goto6.2 goto语句以及用语句以及用gotogoto语句构成循环语句构成循环6.3 6.3 用用whilewhile语句实现循环语句实现循环6.4 6.4 用用do-whiledo-while语句实现循环语句实现循环6.5 6.5 用用for for 语句实现循环语句实现循环 6.6 6.6 循环的嵌套循环的嵌套6.7 6.7 几种循环的比较几种循环的比较6.8 break6.8 break语句语句continuecontinue和语句和语句6.9 6.9 程程 序序 举举 例例2 6.1 概述什么是循环?什么是循环?为什么要

2、使用循环?为什么要使用循环?问题问题1 1:问题问题2:2:求学生平均成绩求学生平均成绩 3循环4生活中的例子:生活中的例子:击鼓传花:击鼓传花:大家坐成一个圈,鼓声响起的时候将花束顺序交大家坐成一个圈,鼓声响起的时候将花束顺序交到下一个人的手里,依次向下传递,当鼓声突然到下一个人的手里,依次向下传递,当鼓声突然中断时停止传花,花束落在谁的手里便成为输家中断时停止传花,花束落在谁的手里便成为输家4100米接力赛跑:米接力赛跑:第第1个人跑完个人跑完100米后将接力棒传给第米后将接力棒传给第2个人,第个人,第2个人再跑个人再跑100米,然后是第米,然后是第3个人,直到第个人,直到第4个人个人跑完

3、最后一个跑完最后一个100米米共同点:共同点:都要完成相同的任务:都要完成相同的任务:量变量变的重复内容的重复内容都有结束条件:发生都有结束条件:发生质变质变的界限的界限5 6.2 goto语句以及用语句以及用goto语句构成循环语句构成循环 gotogoto语句语句无条件转向语句无条件转向语句 goto goto 语句标号;语句标号;语句标号用标识符表示,语句标号用标识符表示, 例如:例如:goto label_1; goto label_1; 合法合法; ; goto 123 goto 123; 不合法不合法. .6【例例6.1】用用goto语句和语句和if语句构成循环语句构成循环, 计算

4、计算sum=1+2+3+100 。main() int i,sum=0; i=1;loop: if(i=100) sum=sum+i; i+; goto loop; printf(%dn,sum);7 6.2 goto语句以及用goto语句构成循环滥用滥用gotogoto语句将使程序流程无规律、可读性差语句将使程序流程无规律、可读性差. .不建议使用不建议使用gotogoto语句。语句。一般来说,可以有两种用途:一般来说,可以有两种用途:(1) (1) 与与ifif语句一起构成循环结构;语句一起构成循环结构;(2) (2) 从循环体中跳转到循环体外。从循环体中跳转到循环体外。 8 6.3 用w

5、hile语句实现循环whilewhile语句用来实现语句用来实现“当型当型”循环结构。循环结构。一般形式:一般形式: while (while (表达式表达式) ) 语句语句 执行过程:计算表达式值,若该值为非执行过程:计算表达式值,若该值为非0 0时,时,则执行则执行whilewhile语句中的内嵌语句。然后重复上语句中的内嵌语句。然后重复上述步骤,直到表达式值为假述步骤,直到表达式值为假( (为为0)0),则执行,则执行whilewhile语句的下一条语句。语句的下一条语句。其特点是其特点是: :先判断表达式,后执行语句。先判断表达式,后执行语句。循环体语句循环体语句9 6.3 用whil

6、e语句实现循环注意:注意:(1)(1)循环体如果包含一个以上的语句,应该用花括弧括起来,循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。以复合语句形式出现。 (2)(2)在循环体中应有使循环趋向于结束的语句。在循环体中应有使循环趋向于结束的语句。101. 计算计算sum=1+2+3+10011第5章 循环程序设计1. 计算sum=1+2+3+100循环体循环控制条件循环控制变量循环的初始化#include void main( ) int i=1, sum=0 ;while ( i = 100 )sum = sum + i ;i+ ;printf ( “Sum = %d

7、n”, sum ) ;12第5章 循环程序设计2. 计算sum=2+4+6+100循环体循环体循环控制条件循环控制条件循环控制变量循环控制变量循环的初始化#include void main( ) int i=2, sum=0 ;while ( i = 100 )sum = sum + i ;i+=2 ;printf ( “Sum = %d n”, sum ) ;132. 计算sum=2+4+6+100循环体循环体循环控制条件循环控制条件循环控制变量循环控制变量循环的初始化循环的初始化#include void main( ) int i=2, sum=0 ;while ( i = 100 )

8、sum = sum + i ;i+=2 ;printf ( “Sum = %d n”, sum ) ;14 6.4 do-while语句语句 do-whiledo-while语句的特点语句的特点: :先执行循环体,然后判断循环条先执行循环体,然后判断循环条件是否成立。件是否成立。 一般形式一般形式: : do do 循环体语句循环体语句 while (while (表达式表达式) );执行过程:执行过程:先执行一次指定的循环体语句,然后判别表达式,先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零当表达式的值为非零(“(“真真”) ) 时,返回重新执行循环体语句,时,返回重新执行循

9、环体语句,如此反复,直到表达式的值等于如此反复,直到表达式的值等于0 0为止,此时循环结束。为止,此时循环结束。15 6.4 用do-while语句实现循环whilewhile语句和用语句和用do-whiledo-while语句的比较语句的比较: :二者是完全等价的。二者是完全等价的。do-whiledo-while语句有可能一次也不执行循环体。语句有可能一次也不执行循环体。16循环的变化:循环的变化:sum=1+2+3+100#include void main( ) int i=1, sum=0 ;while ( i= 100 ) sum = sum + i; i+ ; printf (

10、“Sum = %d n”, sum ) ;#include void main( ) int i=1, sum=0 ;dosum = sum + i ;i+;while ( i= 100 );printf ( “Sum = %d n”, sum ) ;17顺序打印顺序打印1-10的阶乘,即的阶乘,即1!, 2!, , 10!本题的关键是求阶乘本题的关键是求阶乘数学上,数学上,n!=123(n-1)n18外循环内循环对比程序对比程序:(更优更优)#include void main( ) int i=1;float f = 1;while( i = 10 ) f = f * i; printf(

11、 %2d! = %.0f n, i, f ); i + ;思考一下:思考一下:8-10的阶乘的阶乘#include void main( )int i=1, j ;float f ;while( i = 10 )j = 1;f = 1;while( j = i )f = f * j;j + ;printf( “ %2d! = %.0f n”, i, f );i + ;19 6.5 用for 语句实现循环一般形式一般形式: : for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3) 3) 语句语句表达式表达式1:初始化表达式,只执行一次:初始化表达式,只执行一次表达式表达式

12、2:循环控制表达式,控制循环的结束:循环控制表达式,控制循环的结束表达式表达式3:增量表达式:增量表达式 ,使表达式,使表达式2趋向于假趋向于假20 6.5 用for 语句实现循环forfor语句的执行过程:语句的执行过程: (1) 1) 先求解表达式先求解表达式1 1。 (2) (2) 求解表达式求解表达式2 2,若其值为真,若其值为真( (非非0)0),则执,则执行行forfor语句中指定的内嵌语句,然后执行下语句中指定的内嵌语句,然后执行下面第面第(3)(3)步。步。若为假若为假( (值为值为0)0),则结束循环,则结束循环转转到第到第(5)(5)步。步。 (3) (3) 求解表达式求解

13、表达式3 3。 (4) (4) 转回上面第转回上面第(2)(2)步骤继续执行。步骤继续执行。 (5) (5) 循环结束,执行循环结束,执行forfor语句下面的一个语句语句下面的一个语句 21任意输入任意输入10个数,求平均值个数,求平均值#include void main( ) int i ;float x, sum=0 ;printf( Enter 10 numbers one by one: n );for( i =1 ; i=10 ; i+)scanf( %f, &x );sum += x ;printf( Average is %f n, sum/10 );22例:顺序打印例:顺序

14、打印1-10的阶乘,即的阶乘,即1!, 2!, 3!, , 10!#include void main( )int i, j ;float f ;for( i=1; i = 10 ; i+ )f = 1;for( j=1; j = i ; j+ )f = f * j; printf( %2d! = %.0f n, i, f );#include void main( )int i=1, j ;float f ;while( i = 10 )j = 1;f = 1;while( j = i )f = f * j;j + ;printf( “ %2d! = %.0f n”, i, f );i +

15、;23例:打印几何图形例:打印几何图形对于这类问题,每行对于这类问题,每行中星号的个数、总行中星号的个数、总行数等都应该用循环结数等都应该用循环结构进行控制,而不是构进行控制,而不是直接输出若干行字符直接输出若干行字符串串#include void main( )int i, j ;for(i=1; i = 4; i+ )for( j = 0; ji ; j+ ) putchar( );for( j = 1; j=4 ; j+ ) putchar(*);putchar(n);* * * * * * * * * * * * *24for语句的变化形式语句的变化形式可以省略可以省略for语句的语句

16、的“表达式表达式1”或或“表达式表达式3”,也可以都省略(也可以都省略(“退化为退化为”while语句)语句)例:将用键盘输入的若干字符顺序输出到屏幕上例:将用键盘输入的若干字符顺序输出到屏幕上#include void main( ) char ch ;for( ; (ch=getchar( ) ) !=n ; )putchar( ch ) ;25 6.6 循环的嵌套循环的嵌套一个循环体内又包含另一个完整的循环结构一个循环体内又包含另一个完整的循环结构 称为循环的嵌套。内嵌的循环中还可以嵌套称为循环的嵌套。内嵌的循环中还可以嵌套 循环,这就是多层循环。循环,这就是多层循环。三种循环三种循环(

17、while(while循环、循环、do-whiledo-while循环和循环和forfor循循 环环) )可以互相嵌套可以互相嵌套。26 6.6 循环的嵌套下面几种都是合法的形式:下面几种都是合法的形式:(1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( ); 27 6.6 循环的嵌套(4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ) 28错误的嵌套形式 循环必须是完整的,不允许循环必须是完整的,不允许内外循环交叉嵌套内外循环交叉

18、嵌套f = 1;while( i 10)i=1;do f = f * i;i +; while( i10 );混乱的控制条件 内外循环的循环控制条件通常内外循环的循环控制条件通常是分开的,相对独立的是分开的,相对独立的i=1; s=0;while ( i 3 )s = s + f;i = 1; f=1;while( i100area100时,执行时,执行breakbreak语句,提前结束循环,即不再继续执语句,提前结束循环,即不再继续执行其余的几次循环行其余的几次循环。r=1;r=10;r+r=1;r100) break;34 6.8 break语句和continue语句 6.8.2 cont

19、inue6.8.2 continue语句语句 作用为结束本次循环,即作用为结束本次循环,即跳过循环体中下面尚未执行的语句跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定接着进行下一次是否执行循环的判定. .一般形式:一般形式: continue;continue;35 6.8 break语句和continue语句 continuecontinue语句和语句和breakbreak语句的区别语句的区别 continuecontinue语句语句只结束本次循环,只结束本次循环,而不是终止整个循环的执行而不是终止整个循环的执行。 while( (表达式表达式1) 1) for if( (

20、表达式表达式2) 2) continue; 36 6.8 break语句和continue语句 continuecontinue和和breakbreak的区别的区别 breakbreak语句则是结束整个循环过程语句则是结束整个循环过程,不再,不再判断执行循环的条件是否成立。判断执行循环的条件是否成立。 while( (表达式表达式1) 1) for if( (表达式表达式2) 2) break; 37 6.9 程序举例 例例6.66.6用用/41-1/3+1/5-1/7+/41-1/3+1/5-1/7+公公式式求求的的近近似似值值,直直到某一项的绝对值小于为止。到某一项的绝对值小于为止。N-S

21、N-S图表示算法图表示算法 38fabs(t ()=1e-6float s=1.0,pi=0;int s=1,n=1;while( ) pi+=t; n+=2; s=-s; t=s/n;pi*=4;39 6.9 程序举例 例例6.76.7 求求FibonacciFibonacci数列前数列前4040个数。这个数列有如下特点:第个数。这个数列有如下特点:第1 1,2 2两个数为两个数为1 1,1 1。从第。从第3 3个数开始,该数是其前面两个数之和。个数开始,该数是其前面两个数之和。即即: :F(1)=1 (n=1)F(1)=1 (n=1)F(2)=1 (n=2)F(2)=1 (n=2)F(n)

22、=F(n-1)+F(n-2)F(n)=F(n-1)+F(n-2) (n3)(n3) 算法如图所示算法如图所示:40 6.9 程序举例 例例6.86.8 判断判断m m是否素数。是否素数。算法思想算法思想: :让让m m被被2 2到除,如果到除,如果m m能被能被2 2之中任何一个整数整之中任何一个整数整除,则提前结束循环,此时除,则提前结束循环,此时i i必然小于或等于必然小于或等于k(k(即即) );如;如果果m m不能被不能被2 2k(k(即即) )之间的任一整数整除,则在完成最后之间的任一整数整除,则在完成最后一次循环后,一次循环后,i i还要加还要加1 1,因此,因此i=k+1i=k+

23、1,然后才终止循环。,然后才终止循环。在循环之后判别在循环之后判别i i的值是否大于或等于的值是否大于或等于k+1k+1,若是,则表,若是,则表明未曾被明未曾被2 2k k之间任一整数整除过,因此输出之间任一整数整除过,因此输出“是素数是素数”。 4142float k;int m,i=2;scanf(“%d”,&m);while(ik+143 6.9 程序举例 例例6.106.10 译密码。为使电文保密,往往按一定规律将其转译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。换成密码,收报人再按约定的规律将其译回原文。 思路:思路:可以按以下规律将电文变成密

24、码:可以按以下规律将电文变成密码: 将字母将字母A A变成字母变成字母E E,a a变成变成e e,即变成其后的第,即变成其后的第4 4个字母,个字母,W W变成变成A A,X X变成变成B B,Y Y变成变成C C,Z Z变成变成D D。 44练习练习1.已知在某已知在某C语言编译系统中表达式语言编译系统中表达式sizeof(int)的值是的值是2,如果,如果希望将常量希望将常量-70 000正确地保存在一个变量正确地保存在一个变量a中,该变量声明语中,该变量声明语句应该是句应该是_。 A. int a;B. long int a;C. unsigned int a;D. unsigned

25、long int a;2.常量常量n的数据类型是的数据类型是_。3.C语言的源程序中若出现常量语言的源程序中若出现常量1L,则该常量的类型是,则该常量的类型是_。4.(2005年秋年秋)以下声明中错误的是以下声明中错误的是_。 A.int a=0xFFB.double a=1.2e0.5C.long a=2L D. char a=7245练习:以下程序运行后的输出结果的第一行是练习:以下程序运行后的输出结果的第一行是_,第二行是第二行是_。#includevoid main()int i=5;doswitch(i%2)case 0: i-; break;case 1: i-; continue;i-;printf(%dn, i);while(i0);46计算计算 (1!)+(1!+2!)+(1!+2!+3!)+(1! +2!+3!+20!)。main()int i, n;double s=0, t;for(i=1;i=20;i+)_;for(n=1; _;n+)t=t*n; s=s+t; printf(1!)+(1!+2!)+(1! +2!+20!)=%en,s);47

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号