《第6章循环结构设计.ppt》由会员分享,可在线阅读,更多相关《第6章循环结构设计.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章循环结构设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望本章主要内容本章主要内容l lC C语言中的三种循环语句:语言中的三种循环语句:whilewhilewhilewhile语句(当型)语句(当型)语句(当型)语句(当型)dowhiledowhiledowhiledowhile语句(直到型)语句(直到型)语句(直到型)语句(直到型)forforforfor语句(当型)语句(当型)语句(当型)语句(当型)l l循环体中的辅助控制语句:循环体中的辅助控制语
2、句:breakbreakbreakbreak语句语句语句语句continue continue continue continue 语句语句语句语句goto goto goto goto 语句语句语句语句本章是本章是全书的重全书的重点和难点和难点!点!2while while 语句语句“当型当型”循环结构循环结构一般形式:一般形式:一般形式:一般形式:while(while(while(while(表达式表达式表达式表达式)语句语句语句语句说明:说明:说明:说明:“表达式表达式表达式表达式”为循环条件;为循环条件;为循环条件;为循环条件;“语句语句语句语句”为循环体。为循环体。为循环体。为循环
3、体。特点:特点:特点:特点:先判断表达式,后执行先判断表达式,后执行先判断表达式,后执行先判断表达式,后执行语句语句语句语句图6_13【例【例6.1】求】求 。图6_24main()main()int i=1,sum=0;int i=1,sum=0;while(i=100)while(i=100)sum=sum+i;sum=sum+i;i+;i+;printf(%d n,sum);printf(%d n,sum);编程求解:1+2+3+100?图6_2“i1”可可否换成:否换成:“i0”5注意:注意:JJwhilewhile语句中的语句中的语句中的语句中的“表达式表达式表达式表达式”(即判断条
4、件)可以(即判断条件)可以(即判断条件)可以(即判断条件)可以是任意的表达式,但一般为关系表达式或逻辑表是任意的表达式,但一般为关系表达式或逻辑表是任意的表达式,但一般为关系表达式或逻辑表是任意的表达式,但一般为关系表达式或逻辑表达式。达式。达式。达式。JJ循环体如果包含一个以上的语句,应该用花括弧循环体如果包含一个以上的语句,应该用花括弧循环体如果包含一个以上的语句,应该用花括弧循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。括起来,以复合语句形式出现。括起来,以复合语句形式出现。括起来,以复合语句形式出现。JJ在循环体中应有使循环趋向于结束的语句,以免在循环体中应有使
5、循环趋向于结束的语句,以免在循环体中应有使循环趋向于结束的语句,以免在循环体中应有使循环趋向于结束的语句,以免形成死循环。形成死循环。形成死循环。形成死循环。JJ允许循环体以空语句形式出现。允许循环体以空语句形式出现。允许循环体以空语句形式出现。允许循环体以空语句形式出现。6【例【例6.26.2】求】求2 2n n。main()int i=1,n;long int p=1;scanf(%d,&n);while(i=n)p*=2;i+;printf(%dn,p);图6_37dodowhile while 语句语句“直到型直到型”循环结构循环结构=一般形式:一般形式:do 语句语句while(表达
6、式);表达式);=特点:特点:先执行一次指定的先执行一次指定的循环内嵌语句,然后判循环内嵌语句,然后判断条件表达式。断条件表达式。图图6_48【例【例6.3】#include main()char c;do c=getchar();if(c=A&c=Z)c+=32;putchar(c);while(c!=n);将键盘输入将键盘输入字符中所有字符中所有大写字母转大写字母转换为小写字换为小写字母,其他字母,其他字符不变。符不变。9for for 语句语句“当型当型”循环结构循环结构l一般形式:for(for(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3
7、)3)语句语句语句语句l说明:表达式1:循环变量赋初始值表达式2:循环条件表达式3:循环变量增值语句:循环体图6_510【例【例6.4】求】求 。(改【例。(改【例6.1】)】)main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%d n,sum);11三种循环的比较:三种循环的比较:l l三种循环都可以用来处理同一问题,一般情况下三种循环都可以用来处理同一问题,一般情况下三种循环都可以用来处理同一问题,一般情况下三种循环都可以用来处理同一问题,一般情况下它们可以互相代替。它们可以互相代替。它们可以互相代替。它们可以互相代替。l l用用用用w
8、hilewhilewhilewhile和和和和do whiledo whiledo whiledo while循环时,循环变量初始化循环时,循环变量初始化循环时,循环变量初始化循环时,循环变量初始化的操作在的操作在的操作在的操作在while while while while 和和和和do whiledo whiledo whiledo while语句前完成;语句前完成;语句前完成;语句前完成;forforforfor语句可以在表达式语句可以在表达式语句可以在表达式语句可以在表达式1 1 1 1中完成。中完成。中完成。中完成。12三种循环的比较三种循环的比较(续续):l lwhilewhile
9、whilewhile和和和和do whiledo whiledo whiledo while循环只在循环只在循环只在循环只在whilewhilewhilewhile后面指定循环后面指定循环后面指定循环后面指定循环条件,且在循环体中应包含使循环趋于结束的语条件,且在循环体中应包含使循环趋于结束的语条件,且在循环体中应包含使循环趋于结束的语条件,且在循环体中应包含使循环趋于结束的语句;句;句;句;forforforfor循环可以在表达式循环可以在表达式循环可以在表达式循环可以在表达式3 3 3 3中包含使循环趋于结中包含使循环趋于结中包含使循环趋于结中包含使循环趋于结束的操作,甚至可以将循环体中的
10、操作全部放到束的操作,甚至可以将循环体中的操作全部放到束的操作,甚至可以将循环体中的操作全部放到束的操作,甚至可以将循环体中的操作全部放到表达式表达式表达式表达式3 3 3 3中,功能更强。中,功能更强。中,功能更强。中,功能更强。l lwhile while while while 和和和和forforforfor循环是先判断表达式,后执行语句;循环是先判断表达式,后执行语句;循环是先判断表达式,后执行语句;循环是先判断表达式,后执行语句;do whiledo whiledo whiledo while循环是先执行语句后判断表达式。循环是先执行语句后判断表达式。循环是先执行语句后判断表达式。
11、循环是先执行语句后判断表达式。13循环的嵌套循环的嵌套l定义:定义:一个循环体中又包含一个完整的循一个循环体中又包含一个完整的循环结构,称为循环的嵌套。环结构,称为循环的嵌套。l说明:说明:while while 循环、循环、do whiledo while循环和循环和 forfor循环都可以进行嵌套,而且可以相循环都可以进行嵌套,而且可以相互嵌套。互嵌套。14几种合法的嵌套结构:几种合法的嵌套结构:while()while()do do while();while();for(;)for(;)while()do while();for(;)while()do for(;)while();15
12、使用循环嵌套时注意:使用循环嵌套时注意:要保证嵌套的每一层循环在逻辑上都是完整的,避免嵌套交叉使用。要保证循环到最后有一个跳出循环的条件,否则会产生死循环(嵌套循环中检查死循环错误,相对来说比较困难)。在编程时,注意循环嵌套的书写最好用阶梯缩进阶梯缩进的形式,可使程序层次分明。16main()int i,j;printf(n );for(i=1;i=9;i+)printf(%4d,i);printf(n-);for(i=1;i=9;i+)printf(n%4d,i);for(j=1;j=i;j+)printf(%4d,i*j);【例【例6.56.5】输出九九表。】输出九九表。1 2 3 4 5
13、 6 7 8 9-1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 8117break break 语句语句无条件转移语句无条件转移语句vv一般形式:breakbreak;vv功能:v用在switch语句中使流程跳出switch结构,继续执行switch语句后面的语句。v用在循环体内,迫使所在循环立即终止(跳出当前循环体),继续执行循环体后面的第一条语句。vv说明:brea
14、kbreak语句不能用于循环语句和语句不能用于循环语句和switchswitch语句之外的任何其他语句中。语句之外的任何其他语句中。18【例【例6.6】把数】把数316分为两个数之和,其中分为两个数之和,其中一个为一个为13的倍数,一个为的倍数,一个为11的倍数。的倍数。main()int i=0;for(;i+)if(!(316-i*13)%11)break;printf(13*%d+11*%d=316n,i,(316-13*i)/11);19continuecontinue语句语句无条件转移语句无条件转移语句无条件转移语句无条件转移语句一般形式:continuecontinue;功能:结束
15、本次循环(跳过循环体中尚未执行的语句),接着进行是否执行下一次循环的判定。continuecontinue和和breakbreak的区别:的区别:continuecontinue只结束本次循环,而非终止整个只结束本次循环,而非终止整个循环。循环。breakbreak则是结束所在循环,不再进行条件则是结束所在循环,不再进行条件判断。判断。20【例【例6.7】输出】输出100200之间所有不能被之间所有不能被3整除的数。整除的数。main()int n,count=0;for(n=100;n=200;n+)if(n%3=0)continue;printf(%4d,n);count+;if(coun
16、t%10=0)printf(n);换成什么,可换成什么,可不改变结果?不改变结果?21goto goto 语句语句l一般形式:一般形式:goto goto 语句标号;语句标号;l说明:说明:gotogoto为无条件转向语句。为无条件转向语句。语句标号必须是合法的标识符。不能用整数作标号。语句标号必须是合法的标识符。不能用整数作标号。l用途:用途:与与ifif语句一起构成循环结构;语句一起构成循环结构;从多层循环体的内层循环跳到外层循环。从多层循环体的内层循环跳到外层循环。结构化程序设计结构化程序设计方法主张限制使用方法主张限制使用gotogoto语句,因为滥用语句,因为滥用gotogoto语句
17、将使程序流语句将使程序流程无规律、可读性差程无规律、可读性差只有不得已只有不得已只有不得已只有不得已(如能大大提高效率如能大大提高效率如能大大提高效率如能大大提高效率)时才能使用时才能使用时才能使用时才能使用gotogotogotogoto!22【例【例6.86.8】用】用ifif和和gotogoto语句构成循环,求语句构成循环,求 。main()int i=1,sum=0;loop:if(i=100)sum=sum+i;i+;goto loop;printf(Sum=%d,sum);23homeworkl阅读并上机运行本章的程序例题,要求理解.l习题15,填在书上;l习题614,存在软磁盘上。24