资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑章标题样式,22:51:00,目标要求,课后作业,讲课提纲,讲课内容,退出,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑章标题样式,?C语言程序设计?,循环程序设计,第,5,章,循环程序设计,掌握,C,语言中,while,循环的用法。,掌握,C,语言中,do-while,循环的用法。,掌握,C,语言中,for,循环的用法。,掌握并能熟练地运用循环的嵌套设计。,掌握,break,语句和,contiue,语句控制循环的方法,目标要求,第,5,章,循环程序设计,概述,While,循环,do-while,循环,for,循环,循环的嵌套,break,语句和,continue,语句,循环结构程序举例,小结,讲课提纲,第,5,章,循环程序设计,5.1.1 while,循环的一般形式,5.1.2 while,循环,的,执行过程,5.1 while,循环,5.2.1 do-while,循环的一般形式,5.2.2 do-while,循环的执行过程,第,5,章,循环程序设计,5.2 do-while,循环,第,5,章,循环程序设计,5.3.1 for循环结构的一般形式,5.3.2 for循环的执行过程,5.3.3 有关for语句的说明,5.3.4 三种循环的比较说明,5.3 for,循环,第,5,章,循环程序设计,5.5.1 break,语句,5.5.2 continue,语句,5.5 break,语句和,continue,语句,第,5,章,循环程序设计,循环结构是结构化程序设计的三种根本结构之一,C语言可实现循环的语句:,用goto 和 if 构成循环限制使用,while 语句,do-while 语句,for 语句,概述,第,5,章,循环程序设计,While,循环的格式:,5.1.1 while,循环的一般形式,while(,表达式),循环体语句;,说明:,While后的表达式,可为任意合法的表达式,循环体可为任意类型语句,假设循环体内需要多个语句,应用复合语句形式,While,循环的执行过程:,5.1.2 while,循环的执行过程,第,5,章,循环程序设计,表达式,循环体,假(0),真(非0),while,第,5,章,循环程序设计,用法说明:,当型循环结构,先判断表达式,后执行循环体,循环体内必须改变循环条件,使其趋于结束,循环体有可能一次也不执行,以下情况,退出while循环,条件表达式不成立为零,循环体内遇break,return,goto,无限循环:while(1),循环体;,5.1.2 while,循环的执行过程,第,5,章,循环程序设计,例 用,while,循环求,main(),int i,sum;,i=1;,sum=0;,while(i=100),sum=sum+i;,i+;,printf(%d,sum);,循环初值,循环终值,循环变量增值,循环条件,循环体,5.1.2 while,循环的执行过程,例 利用,while,循环显示,ASC,码表中的可见字符。,main(),unsigned char,ch;,ch=32;,while(,ch,),printf(%c,ch);,ch+;,5.1.2 while,循环的执行过程,第,5,章,循环程序设计,第,5,章,循环程序设计,do-while,循环的格式:,5.2.1 dowhile,循环的一般形式,do,循环体语句;,while(,表达式);,说明:,do和while联合使用,以do开始、while结束,“;不可丢,While后的表达式,可为任意合法的表达式,循环体可为任意类型语句,第,5,章,循环程序设计,do-while,循环的执行流程,5.2.2 dowhile,循环的执行过程,do,循环体,表达式,假(0),真(非0),while,第,5,章,循环程序设计,用法说明:,直到型循环,先执行循环体,后判断表达式,循环体内必须改变循环条件,使其趋于结束,至少执行一次循环体,do-while,可转化成,while,结构,5.2.2 do-while,循环,expr,循环体,假(0),真(非0),循环体,While,循环,5.2.2 do-while,循环,例 用,do-while,循环求,main(),int i,sum=0;,i=1;,do,sum+=i;,i+;,while(i=100);,printf(%d,sum);,第,5,章,循环程序设计,第,5,章,循环程序设计,5.2.2 do-while,循环,例 while和do-while循环的比较,main(),int sum=0,i;,scanf(%d,while(i=10),sum=sum+i;,i+;,printf(sum=%dn,sum);,main(),int sum=0,i;,scanf(%d,do,sum=sum+i;,i+;,while(i=10);,printf(sum=%dn,sum);,循环前的初始值,循环体内必须改变循环条件,表达式第一次是否值为真,第,5,章,循环程序设计,for循环的根本格式:,5.3.1 for,语句的一般形式,for(,表达式1;表达式2;表达式3),循环体语句;,“灵活循环次数确定或不确定只给结束条件,第,5,章,循环程序设计,for,循环的执行流程图:,5.3.2,for,循环的执行过程,expr2,循环体,假(0),真(非0),for,expr1,expr3,第,5,章,循环程序设计,5.3.2,for,循环的执行过程,例 用,for,循环求,main(),int i,sum;,sum=0;,for(i=1;i=100;i+),sum+=i;,printf(“sum=%d,sum);,表达式1,;,while(,表达式,2),循环体语句;,表达式,3;,第,5,章,循环程序设计,5.3.3 有关,for,语句的说明,for,语句一般应用形式,:,for,(,循环变量赋初值;循环条件;循环变量增值),循环体语句;,说明:,for语句中三个表达式类型任意,都可省略,但分号“;不可省,无限循环:for(;),for语句可以转换成while结构,循环体语句可以是一条语句,也可以是复合语句。,第,5,章,循环程序设计,分析如下程序:,5.3.3 有关,for,语句的说明,main(),int i;,for(i=0;i10;i+),printf(“*);,main(),int i=0;,for(;i10;i+),printf(“*);,main(),int i;,for(i=0;i10;),printf(“*);,i+;,main(),int i=0;,for(;i10;),printf(“*);,i+;,main(),int i=0;,for(;i10;printf(“*),i+),;,例,用,for,循环求,n!,。,即计算,1,2,3,n,的值。,5.3.3 有关,for,语句的说明,main(),int i,s,n;,s=1;,printf(Enter n:);,scanf(%d,for(i=1;i=n;i+),s=s*i;,printf(s=%dn,s);,第,5,章,循环程序设计,三种循环可以互相代替,循环变量初始化的位置,控制循环变量改变,使循环趋于结束,循环体都可以使用复合语句,可以用,break,语句跳出循环,用,continue,语句结束本次循环,5.3.4三种循环的比较说明,第,5,章,循环程序设计,第,5,章,循环程序设计,循环的嵌套,三种循环可互相嵌套,层数不限,设置不同循环变量,外层循环可包含两个以上内循环,但不能相互交叉,嵌套循环的执行流程,5.4,循环的嵌套,(1),while(),while(),(2),do,do,while();,while();,(3),for(;),for(;),(4),while(),do,while();,(5),for(;),while(),(6),do,for(;),while();,二重循环的结构(for语句),for表达式1;表达式2;表达式3,语句1;,for表达式4;表达式5;表达式6,语句2;,语句3;,第,5,章,循环程序设计,例,使用双层,for,循环打印下面的图形,5.4,循环的嵌套,*,*,*,*,*,main(),int i,j,k;,for(i=0;i=4;i+),for(k=1;k=i;k+),printf();,for(j=0;j=4;j+),printf(*);,printf(n);,内循环,外循环,第,5,章,循环程序设计,使用格式:,break,;,使用说明:,在循环语句和,switch,语句中,终止并跳出循环体或开关体,break,只能,终止并跳出,最近一层,的结构,break,不能用于循环语句和,switch,语句之外的任何其它语句之中,5.5.1 break,语句,break,的流程控制:,5.5.1 break,语句,do,break;,.,expr,假(0),真(非0),while,表达式,break;,假(0),真(非0),while,表达式2,break;,.,假(0),真(非0),for,表达式1,表达式3,第,5,章,循环程序设计,例,使用,break,语句跳出循环体,5.5.1 break,语句,main(),int i,sum=0;,for(i=1;i1000)break;,printf(i=%d,sum=%dn,i,sum);,运行结果:,i=45,sum=1035,第,5,章,循环程序设计,第,5,章,循环程序设计,使用格式:,continue,;,使用说明:,结束本次循环,跳过,循环体中,尚未执行的语句,进行下一次是否执行循环体的判断,仅用于循环语句中,5.5.2 continue,语句,continue,的流程控制:,5.5.2 continue,语句,真(非0),do,continue;,.,表达式,假(0),while,表达式,continue;,假(0),真(非0),while,表达式2,continue;,.,假(0),真(非0),for,表达式1,表达式3,第,5,章,循环程序设计,例,输出,0,100,之间的偶数,main(),int x;,for(x=0;x=0):);,scanf(%ld,printf(The number in reverse order is);,do,printf(%d,n%10);,n/=10;,while(n!=0);,第,5,章,循环程序设计,例,5.12,求,Fibonacci,数列:1,1,2,3,5,8,的前40个数,每行输出,5,个数。,5.6,循环结构程序举例,f,1,=1 (n=1),f,2,=1 (n=2),f,n,=f,n-1,+f,n-2,(n3),1 1 2 3 5,8 13 21 34 55,89 144 233 377 610,987 1597 2584 4181 6765,10946 17711 28657 46368 75025,121393 196418 317811 514229 832040,1346269 2178309 3524578 022887 9227465,14930352 24157817 39088169 63245986 102334155,第,5,章,循环程序设计,main(),int i;,long f1,f2,f;,f1=1;f2=1;,printf(n%12ld%12ld,f1,f2);,for(i=3;i=40;i+),f=f1+f2;,printf(%12ld,f);,if(i%5=0)printf(n);,f1=f2;,f2=f;,5.7,典型例题评析,第,5,章,循环程序设计,例5.13 输入一个整数,求出它的所有因子。,main(),long n,i;,printf(nEnter a positive integer:);,scanf
展开阅读全文