《第6章循环结构.ppt》由会员分享,可在线阅读,更多相关《第6章循环结构.ppt(81页珍藏版)》请在第壹文秘上搜索。
1、本章主要内容本章主要内容概述概述用用while语句实现循环语句实现循环用用dowhile语句实现循环语句实现循环用用for语句实现循环语句实现循环循环的嵌套循环的嵌套几种循环语句的比较几种循环语句的比较break语句和语句和continue语句语句程序举例程序举例 第六章 循环控制6.1 概述 循环结构循环结构:程序设计中程序设计中,经常需要重复相同的经常需要重复相同的计算或处理过程。计算或处理过程。例如:全班有例如:全班有50个学生个学生,统计各学生三,统计各学生三 门课门课的平均成绩的平均成绩。scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;
2、printf(“aver=%7.2f”,aver);输入学生输入学生1的三门课成绩,并计算平均值后输出的三门课成绩,并计算平均值后输出scanf(“%f,%f,%f”,&s1,&s2,&s3);aver=(s1+s2+s3)/3;printf(“aver=%7.2f”,aver);输入学生输入学生2的三门课成绩,并计算平均值后输出的三门课成绩,并计算平均值后输出要对要对50个学生进行相同操作个学生进行相同操作重复重复50次次循环结构两大要素:循环结构两大要素:循环体循环体 可重复执行的语句或语句组可重复执行的语句或语句组循环条件循环条件 条件表达式,指出什么时候执行循环体,条件表达式,指出什么
3、时候执行循环体,什么时候结束循环。什么时候结束循环。循环体语句条件表达式循环体语句条件表达式真假while的后续语句1形式形式:while(条件表达式)(条件表达式)循环体语句循环体语句 6.3 while语句语句例例0:用:用 while 语句实现在屏幕上输出语句实现在屏幕上输出10行行“I love programming!”。分析分析:设计变量并赋初值设计变量并赋初值 用用int型变量型变量i表示行数,初值为表示行数,初值为1设计循环条件设计循环条件 i10设计循环体设计循环体 printf(“I love programming!n”);i+;用循环语句实现用循环语句实现void ma
4、in()int i;i=1;while(i=10)printf(“I love programming!n”);i+;循环变量循环变量赋初值赋初值循环变量循环变量增值增值循环条件循环条件循环体循环体条件表达式条件表达式必须加括号,括必须加括号,括号后不能有;号后不能有;循环体包含多条语循环体包含多条语句时,句时,不能少不能少例例1:用:用 while 语句实现语句实现 1+2+3+100分析分析:设计变量并赋初值设计变量并赋初值 1.用用int型变量型变量sum存放和,初值为存放和,初值为0 2.用用int型变量型变量i表示累加变量,初值为表示累加变量,初值为1设计循环体设计循环体 sum=s
5、um+i;i+;设计循环条件设计循环条件 i100用循环语句实现用循环语句实现程序流程图:程序流程图:开始初始化 sum=0;i=1;判断:i=100?sum=sum+i;i=i+1;输出 sum结束真假真sum=sum+i;i=i+1;判断:i=100?#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);循环结束后循环结束后,i的的值是多少?值是多少?101使用说明:使用说明:1)在在while的循环体中一定要有使循环趋于结束的的循环体中一定要有使循环趋于结束的语句;否则将形成语句;否则将形成
6、死循环死循环;2)注意循环操作的范围、花括号、分号的使用;注意循环操作的范围、花括号、分号的使用;3)注意给循环变量赋初值的位置及初值的正确性;注意给循环变量赋初值的位置及初值的正确性;#include void main()int sum=0,i=1;while (i=100)sum=sum+i;i+;printf(sum%dn,sum);程序程序:i+;sum+=i;i=0;100例例 2求求1到到100之间的奇数之和,偶数之积之间的奇数之和,偶数之积。sum=0 mul=1 i=100 i能整除能整除2?yesnomul=mul*isum=sum+i输出输出sum,muli+;i=1ma
7、in()double mul=1;int i=1,sum=0;while (i=100)if (i%2=0)mul=mul*i;else sum=sum+i;i+;printf(sum=%dn,sum);printf(mul=%en,mul);main()int i,k1,k2,k;i=1;k1=1;k2=2;while (i=5)k=k1+k2;k1=k2;k2=k;i+;printf(%5d,k);例例 3读程序练习:读程序练习:3 5 8 13 21 1形式:形式:do 语句语句 while(表达式)(表达式);6.4 do-while语句语句循环体语句条件表达式循环体语句条件表达式真假
8、例例 1用用do_while 语句实现语句实现 1+2+3+100分析分析:设计变量并赋初值设计变量并赋初值 1.用用int型变量型变量sum存放和,初值为存放和,初值为0 2.用用int型变量型变量i表示累加变量,初值为表示累加变量,初值为1设计循环体设计循环体 sum=sum+i;i+;设计循环条件设计循环条件 i100用循环语句实现用循环语句实现void main()int i,sum=0;i=1;do sum=sum+i;i+;while (i=1e-3);printf(sum=%fn,sum);while循环与循环与do_while循环小结循环小结:1.循环体内必须有使循环趋于终止的
9、条件循环体内必须有使循环趋于终止的条件 while (i=100)sum=sum+i;i+;do sum=sum+i;i+;while (i=100);2.注意循环初值与循环条件注意循环初值与循环条件i=1;while (i=100)sum=sum+i;i+;i=0;while (i100)i+;sum=sum+i;3.do_while 循环的循环体至少执行一循环的循环体至少执行一 次次,while循环的循环体可能一次循环的循环体可能一次 也不执行。也不执行。4.在循环体至少执行一次的前提下,在循环体至少执行一次的前提下,do_while与与while 循环等价。循环等价。例例3:求求 n!m
10、ain()int i=1,n;double m=1;scanf(%d,&n);while(i=n)m=m*i;i+;printf(%10.0fn,m);printf(“i=%dn”,i);main()int i=1,n;double m=1;scanf(%d,&n);do m=m*i;i+;while(i=n);printf(%10.0fn,m);printf(“i=%dn”,i);1.一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句 for 的循环体的循环体括号不可少括号不可少分号不可少分号不可少 6.5 for语句语句求表达式求表达式1判表达式判表达式2
11、语句语句求表达式求表达式3for语句的下一语句的下一个语句个语句 真真,非非0假假,值为值为0for语句执行过程示意for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句表达式表达式1只执只执行行1次;次;表达式表达式2、3和内嵌语句执和内嵌语句执行多次行多次通常:通常:表达式表达式1用于用于对循环变量赋初值对循环变量赋初值;表达式表达式2给出给出循环条件循环条件;表达式表达式3使使循环变量增值循环变量增值;循环类型:循环类型:当型当型for语句等价于下列语句:语句等价于下列语句:表达式表达式1;while(表达式(表达式2)语句;语句;表达式表达式3;例例:#include voi
12、d main()int i,sum=0;for (i=1;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);例:例:for(i=0;i=10;i=i+2)printf(“%3d”,i);printf(“ni=%d”,i);运行结果:运行结果:0 2 4 6 8 10 i=12例:例:for(i=10;i;i-)printf(“%d,”,i);运行结果:运行结果:10,9,8,7,6,5,4,3,2,1,例:例:for(i=1,j=6;ij;i+,j-)printf(“%d*%d=%dn”,i,j,i*j);运行结果:运行结果:1*6=6 2*5=10 3*4=1
13、2 3.说明说明:1)表达式)表达式1可省略,但分号不能省可省略,但分号不能省;如如:int i=1,sum=0;for(;i=100;i+)sum=sum+i;2)若表达式)若表达式2省略,循环条件永远为真省略,循环条件永远为真;如如:for(i=1;i+)printf(“%d,”,i);死循环死循环3)表达式)表达式3也可省略,但应设法保证循环正常结束也可省略,但应设法保证循环正常结束;如如:for(i=1;i=100;)sum=sum+i;i+;4)可只给循环条件)可只给循环条件;i=1;for(;i=100;)sum=sum+i;i+;5)三个表达式都可省)三个表达式都可省;for(;
14、)相当于相当于 while(1)6)表达式)表达式1和表达式和表达式3可以是逗号表达式可以是逗号表达式;如如:for(i=1,sum=0;i=100;i+)sum=sum+i;7)表达式)表达式2一般为关系表达式或逻辑表达式,但一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为也可以是数值表达式或字符表达式,只要其值为非零非零就执行循环体就执行循环体。如如:for(;(c=getchar()!=n;)printf(%c,c);注注:尽量避免用尽量避免用实型变量实型变量控制循环次数。控制循环次数。在循环体内尽量避免改变循环变量的值在循环体内尽量避免改变循环变量的值,否否则
15、将难以预知循环次数。则将难以预知循环次数。例:例:void main()int i;for(i=1;i=20;i+)i=i+5;printf(%5d,i);printf(n);运行结果为:运行结果为:6 12 18 24修改了循环变量修改了循环变量 概念概念:一个循环体内又包含另一个完整的循环结构:一个循环体内又包含另一个完整的循环结构。6.6 循环的嵌套循环的嵌套例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3)while(e1);while(e);while(e);外循环外循环 内循环内循环 外循环外循环 内循环内循环1 内循环内循
16、环2三重循环三重循环错误的循环交叉形式:错误的循环交叉形式:说明说明:1)三种循环可以互相嵌套)三种循环可以互相嵌套 2)嵌套可以是多层的)嵌套可以是多层的 *main()int i,j;for(i=1;i=5;i+)for(j=1;j=5;j+)printf(*);printf(n);1.四种循环一般可互相代替四种循环一般可互相代替 3.while和和do-while循环的循环体中应包括使循循环的循环体中应包括使循环趋于结束的语句。环趋于结束的语句。4.6.while和和for循环是当型循环循环是当型循环,do-while循环是直到型循环循环是直到型循环 6.7 几种循环的比较几种循环的比较一、一、break语句语句 作用作用:1)从循环体内跳出,即提前结束循环从循环体内跳出,即提前结束循环,接着,接着执行循环下面的语句执行循环下面的语句 ;2)break语句语句只能只能 用于用于循环语句和循环语句和 switch 语语句句。6.8 break语句和语句和continue语句语句#include void main()int r;float area;for(r=1;r100)bre