资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,*,第6章 循环结构设计,主讲:黄清泉,1,第6章 循环结构设计主讲:黄清泉1,本章主要内容,C,语言中的三种循环语句:,while,语句(当型),dowhile,语句(直到型),for,语句(当型),循环体中的辅助控制语句:,break,语句,continue,语句,goto,语句,2,本章主要内容C语言中的三种循环语句:2,while,语句,“当型”循环结构,一般形式:,while(,表达式)语句,说明:,“表达式”为循环条件;“语句”为循环体。,特点:,先判断表达式,后执行语句,图6_1,3,while 语句“当型”循环结构一般形式:图6_13,【例6.1】求 。,图6_2,4,【例6.1】求 。图6_24,main(),int i=1,sum=0;,while(i=100),sum=sum+i;,i+;,printf(%d n,sum);,编程求解:,1+2+3+100?,图6_2,“i1”,可否换成:“,i0”,5,main()编程求解:1+2+3+100?图6_2“,注意:,while,语句中的“表达式”(即判断条件)可以是任意的表达式,但一般为关系表达式或逻辑表达式。,循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。,在循环体中应有使循环趋向于结束的语句,以免形成死循环。,允许循环体以空语句形式出现。,6,注意:while语句中的“表达式”(即判断条件)可以是任意的,【例6.2】求2,n,。,main(),int i=1,n;,long int p=1;,scanf(%d,while(i=A,putchar(c);,while(c!=n);,将键盘输入字符中所有大写字母转换为小写字母,其他字符不变。,9,【例6.3】#include 将键盘输入字,for,语句,“当型”循环结构,一般形式:,for(,表达式1;表达式2;表达式3)语句,说明:,表达式1:循环变量赋初始值,表达式2:循环条件,表达式3:循环变量增值,语句:循环体,图6_5,10,for 语句“当型”循环结构一般形式:图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,【例6.4】求 。(改【例6.1】)main,三种循环的比较:,三种循环都可以用来处理同一问题,一般情况下它们可以互相代替。,用,while,和,do while,循环时,循环变量初始化的操作在,while,和,do while,语句前完成;,for,语句可以在表达式1中完成。,12,三种循环的比较:三种循环都可以用来处理同一问题,一般情况下它,三种循环的比较(续,):,while,和,do while,循环只在,while,后面指定循环条件,且在循环体中应包含使循环趋于结束的语句;,for,循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中,功能更强。,while,和,for,循环是先判断表达式,后执行语句;,do while,循环是先执行语句后判断表达式。,13,三种循环的比较(续):while和do while循环只在,循环的嵌套,定义:,一个循环体中又包含一个完整的循环结构,称为循环的嵌套。,说明:,while 循环、do while循环和 for循环都可以进行嵌套,而且可以相互嵌套。,14,循环的嵌套定义:14,几种合法的嵌套结构:,while(),while(),do,do,while();,while();,for(;),for(;),while(),do,while();,for(;),while(),do,for(;),while();,15,几种合法的嵌套结构:while()dofor(;,使用循环嵌套时注意:,要保证嵌套的每一层循环在逻辑上都是完整的,避免嵌套交叉使用。,要保证循环到最后有一个跳出循环的条件,否则会产生死循环(嵌套循环中检查死循环错误,相对来说比较困难)。,在编程时,注意循环嵌套的书写最好用,阶梯缩进,的形式,可使程序层次分明。,16,使用循环嵌套时注意:要保证嵌套的每一层循环在逻辑上都是完整的,main(),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.5】输出九九表。,1 2 3 4 5 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 81,17,main()【例6.5】输出九九表。1,break,语句,无条件转移语句,一般形式:,break;,功能:,用在,switch,语句中使流程跳出,switch,结构,继续执行,switch,语句后面的语句。,用在循环体内,迫使所在循环立即终止(跳出当前循环体),继续执行循环体后面的第一条语句。,说明:,break,语句不能用于循环语句和,switch,语句之外的任何其他语句中。,18,break 语句无条件转移语句一般形式:break;,鸡兔同笼,大约在1500年前,孙子算经中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?,19,鸡兔同笼大约在1500年前,孙子算经中就记载了这个有趣的,continue,语句,无条件转移语句,一般形式:,continue;,功能:,结束本次循环(跳过循环体中尚未执行的语句),接着进行是否执行下一次循环的判定。,continue,和,break,的区别:,continue,只结束本次循环,而非终止整个循环。,break,则是结束所在循环,不再进行条件判断。,20,continue语句无条件转移语句一般形式:cont,【例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(count%10=0)printf(n);,换成什么,可,不改变结果?,21,【例6.7】输出100200之间所有不能被3整除的数。ma,goto,语句,一般形式:,goto,语句标号;,说明:,goto,为无条件转向语句。,语句标号必须是合法的标识符。不能用整数作标号。,用途:,与,if,语句一起构成循环结构;,从多层循环体的内层循环跳到外层循环。,结构化程序设计,方法主张限制使用,goto,语句,因为滥用,goto,语句将使程序流,程无规律、可读性差,只有不得已(如能大大提高效率)时才能使用,goto,!,22,goto 语句一般形式:goto 语句标号;结构化程序设计只,【例6.8】用,if,和,goto,语句构成循环,求 。,main(),int i=1,sum=0;,loop:if(i=100),sum=sum+i;,i+;,goto loop;,printf(Sum=%d,sum);,23,【例6.8】用if和goto语句构成循环,求 。mai,homework,1.从键盘输入整数n,输出下列“*”,*(共n个*),2.从键盘输入m、n,打印m*n的“*”,*,*,*共n行,每行n个*,24,homework1.从键盘输入整数n,输出下列“*”24,打印下列图形,*,*,*,*,*,*,25,打印下列图形25,打印下列图形,*,*,*,*,*,26,打印下列图形26,打印下列图形,*,*,*,*,*,*,27,打印下列图形27,打印下列图形,28,打印下列图形28,
展开阅读全文