第6章循环结构.ppt
《第6章循环结构.ppt》由会员分享,可在线阅读,更多相关《第6章循环结构.ppt(81页珍藏版)》请在三一文库上搜索。
1、本章主要内容 概述 用while语句实现循环 用dowhile语句实现循环 用for语句实现循环 循环的嵌套 几种循环语句的比较 break语句和continue语句 程序举例,第六章 循环控制,6.1 概述,循环结构: 程序设计中, 经常需要重复相同的计算或处理过程。 例如:全班有50个学生,统计各学生三 门课的平均成绩。,scanf(“%f,%f,%f”,输入学生1的三门课成绩,并计算平均值后输出,scanf(“%f,%f,%f”,输入学生2的三门课成绩,并计算平均值后输出,要对50个学生进行相同操作,重复50次,循环结构两大要素: 循环体 可重复执行的语句或语句组 循环条件 条件表达式,
2、指出什么时候执行循环体,什么时候结束循环。,循环体语句,条件表达式,循环体语句,条件表达式,真,假,while的后续语句,1形式 : while(条件表达式) 循环体语句,6.3 while语句,例0:用 while 语句实现在屏幕上输出10行“I love programming!”。,分析: 设计变量并赋初值 用int型变量i表示行数,初值为1 设计循环条件 i10 设计循环体 printf(“I love programming!n”); i+; 用循环语句实现,void main() int i; i=1; while(i=10) printf(“I love programming!
3、n”); i+; ,条件表达式 必须加括号,括号后不能有;,循环体包含多条语句时, 不能少,例1:用 while 语句实现 1+2+3+100,分析: 设计变量并赋初值 1. 用int型变量sum存放和,初值为0 2. 用int型变量i表示累加变量,初值为1 设计循环体 sum=sum+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, s
4、um=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d“,sum); ,循环结束后,i的值是多少?,101,使用说明: 1) 在while的循环体中一定要有使循环趋于结束的语句;否则将形成死循环; 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之间的奇数之
5、和,偶数之积 。,sum=0 mul=1,i=100,i能整除2?,yes,no,mul=mul*i,sum=sum+i,输出sum, mul,i+;,i=1,main( ) 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+; pri
6、ntf(“%5d“,k); ,例 3读程序练习:,3 5 8 13 21,1形式:do 语句 while(表达式);,6.4 do-while语句,循环体语句,条件表达式,循环体语句,条件表达式,真,假,例 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=100); printf(
7、“sum=%d“,sum); ,i+; sum+=i;,i=0;,100,例2:计算表达式,12 23 34 n(n+1),1 1 1 1,+,+,+,+,+,的值,直到某一项的值小于10-3次方为止。,分析:1. 累加项 t= 2. 循环条件为: t10 -3,i(i+1),1,main( ) float sum=0,t; int i=1; do t=1.0/(i*(i+1); sum=sum+t; i+; while (t=1e-3); printf(“sum=%fn“,sum); ,while循环与do_while循环小结: 1. 循环体内必须有使循环趋于终止的条件,while (i=1
8、00) 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!,main( ) int i=1,n; double m=1; scanf(“%d“, ,main( ) int i=1,n; do
9、uble m=1; scanf(“%d“, ,1. 一般形式: for (表达式1; 表达式2; 表达式3) 语句,for 的循环体,括号不可少,分号不可少,6.5 for语句,求表达式1,判表达式2,语句,求表达式3,for语句的下一个语句,真,非0,假,值为0,for语句执行 过程示意,for (表达式1; 表达式2; 表达式3) 语句,表达式1只执行1次; 表达式2、3和内嵌语句执行多次,通常: 表达式1用于对循环变量赋初值; 表达式2给出循环条件; 表达式3使循环变量增值;,循环类型:当型,for语句等价于下列语句: 表达式1; while (表达式2) 语句; 表达式3; ,例: #
10、include void 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); 运行结果
11、:1*6=6 2*5=10 3*4=12,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 (;) 相当于 while (1) 6)表达式
12、1和表达式3可以是逗号表达式 ; 如 : for (i=1,sum=0;i=100;i+) sum=sum+i;,7)表达式2一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零就执行循环体 。 如: for (;(c=getchar( )!=n;) printf(“%c,“,c); 注: 尽量避免用实型变量控制循环次数。,在循环体内尽量避免改变循环变量的值, 否则将难以预知循环次数。,例: void main( ) int i; for(i=1;i=20;i+) i=i+5; printf(“%5d“,i); printf(“n“); ,运行结果为: 6 12 18
13、 24,修改了循环变量,概念 :一个循环体内又包含另一个完整的循环结构 。,6.6 循环的嵌套,例:do-while嵌套 例:do-while、for混合嵌套 do do do for(e1;e2;e3) while(e1); while(e); while(e);,错误的循环交叉形式:,说明 :1)三种循环可以互相嵌套 2)嵌套可以是多层的,* * * * * * * * * * * * * * * * * * * * * * * * *,main( ) int i,j; for (i=1;i=5;i+) for (j=1;j=5;j+) printf (“*“); printf(“n“);
14、 ,例:在屏幕上输出一个由5*5星号组成的方形。,四种循环一般可互相代替 循环次数已知时,常用for 循环次数未知时,常用while或do-while。 3. while和do-while循环的循环体中应包括使循环趋于结束的语句。 4. for的功能强于while和do-while 5. 循环变量初始化的位置不同。 6. while和for循环是当型循环, do-while循环是直到型循环,6.7 几种循环的比较,一、break语句 作用 : 1) 从循环体内跳出,即提前结束循环 ,接着执行循环下面的语句 ; 2) break语句只能 用于循环语句和 switch 语句 。,6.8 break
15、语句和continue语句,#include void main( ) int r; float area; for(r=1; r100) break; printf(“r=%d,area=%-7.2fn”, r, area); printf(“r=%d”,r); ,计算半径为1到10的各圆面积,直到面积大于100为止。,注意: 在循环中使用了break语句后,循环语句的结束可能有两种: 1. 正常结束(正常出口);由于循环条件表达式为假 2. 非正常结束(异常出口):由break语句引起。,使用说明: 1) 内循环中的break仅跳出内循环结构;,if(e) break;,2) 被循环语句嵌
16、套的switch中出现的break,仅跳出switch;,switch(e) break; ,二、continue 语句 作用 :结束本次循环,即跳过循环体中语句中下面尚未执行的语句,接着执行下一次是否执行循环的判定。,for (n=100;n=200;n+) if (n%3= =0) continue; printf(“%d”,n); ,if (n%3!=0) printf(“%d”,n);,例:for中用 continue 例:while中用continue for(e1; e2; e3 ) while( e1 ) if (e) continue; if(e) continue; ,三、b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构
链接地址:https://www.31doc.com/p-2987517.html