第5章+循环结构程序设计.ppt

上传人:marr****208 文档编号:149520363 上传时间:2020-10-27 格式:PPT 页数:89 大小:1.86MB
返回 下载 相关 举报
第5章+循环结构程序设计.ppt_第1页
第1页 / 共89页
第5章+循环结构程序设计.ppt_第2页
第2页 / 共89页
第5章+循环结构程序设计.ppt_第3页
第3页 / 共89页
第5章+循环结构程序设计.ppt_第4页
第4页 / 共89页
第5章+循环结构程序设计.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《第5章+循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第5章+循环结构程序设计.ppt(89页珍藏版)》请在金锄头文库上搜索。

1、1,第5章 循环结构程序设计,教学目标: 掌握while、do-while、for语句及如何利用其实现循环 掌握break和continue语句及其区别,2,5.1为什么需要循环控制,在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题 例如:全班有50个学生,统计各学生三门课的平均成绩。,3,scanf(“%f,%f,%f”,输入学生1的三门课成绩,并计算平均值后输出,scanf(“%f,%f,%f”,输入学生2的三门课成绩,并计算平均值后输出,要对50个学生进行相同操作,重复50次,4,大多数的应用程序都会包含循环结构 循环结构和顺序结构、选择结构是结构化程序设计的三种基本结构,

2、它们是各种复杂程序的基本构造单元,5,循环结构的框图结构,先判断后执行,循环体,6,循环结构的框图结构,先执行 后判断,循环体,7,循环语句,定义,在给定条件成立时,重复执行某个程序段的语句 称为循环语句,重复执行的程序段称为循环体。,循环体,循环体可以是单个C语句、空语句或复合语句。 当循环体中是空语句(只有一个分号)时,表 示在循环体中什么也不做。,循环结构,while语句,do-while语句,for语句,8,5.2用while语句实现循环,全班有50个学生,统计各学生三门课的平均成绩。,9,i=1,i50,输入一个学生成绩,求一个学生平均成绩,输出一个学生平均成绩,i增1,Y,N,用w

3、hile循环结构实现,while(i=50) scanf ; aver= ; printf ; i+; ,10,5.2用while语句实现循环,格式,While(表达式) 语句/语句组,功能,当表达式值为非0时,执行其后语句。,框图,举例,11,例5.1求1+2+3+100,即 解题思路: 这是累加问题,需要先后将100个数相加 要重复100次加法运算,可用循环实现 后一个数是前一个数加1而得 加完上一个数i后,使i加1可得到下一个数,5.2用while语句实现循环,12,#include int main() int i=1,sum=0; /*循环初始化*/ while (i=100) su

4、m=sum+i; i+; /*修改循环变量*/ printf(sum=%dn,sum); return 0; ,复合语句,不能少,不能丢,否则循环永不结束,13,5.3用do-while语句实现循环,表达式,Y,N,循环体语句,功能,格式,框图,举例,Do 语句 While(表达式);,先无条件地执行循环体,然后判断循环条件是否成立,14,5.3用do-while语句实现循环,例5.2 用dowhile语句求: 1+2+3+100,即,15,5.3用do-while语句实现循环,解题思路:,i 100,Y,N,sum=sum+i i=i+1,sum=0 i=1,i=1; sum=0; do s

5、um=sum+i; i+; while(i=100);,16,#include int main() int i=1,sum=0; do sum+=i; /等价于sum=sum+i i+; while(i=100); printf(sum=%dn,sum); return 0; ,17,作业,P140 9、12 验证本次课的例题,18,重点回顾,While 语句:While(表达式) 语句/语句组 Dowhile Do 语句 While(表达式); For语句: for (表达式1;表达式2;表达式3) 语句,19,例5.3 while和do-while循环的比较。,int i,sum=0;

6、printf(“i=?”); scanf(“%d”,int i,sum=0; printf(“i=?”); scanf(“%d”,当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则不相同,20,5.4用for 语句实现循环,格式,for (表达式1;表达式2;表达式3) 语句,设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值执行,循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环,作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的,21,5.4用for 语句实现循环,功能,表达式1:循环变量赋初值;

7、 表达式2:判断是否成立,非时执行循环体; 表达式3:修改循环变量,再判断表达式2的值; 表达式2的值为0时,退出循环。,格式,22,5.4用for 语句实现循环,for (i=1;i=100;i+) printf(%d , i ); ,i 100,Y,N,i=i+1,i=1,输出i,23,5.4用for 语句实现循环,for(i=1;i=100;i+) sum=sum+i; 等价于 i=1; while(i=100) sum=sum+i; i+; ,用for语句更简单、方便,24,5.4用for 语句实现循环,for(表达式1;表达式2;表达式3) 语句,一个或两个或三个表达式均可以省略,f

8、or (sum=0 ; i=100; i+) sum=sum+i;,与循环变量无关 合法,25,5.4用for 语句实现循环,for(sum=0,i=1 ; i=100; i+) sum=sum+i;,逗号表达式 合法,for(i=0,j=100 ; i=j; i+,j- ) k=i+j;,26,5.4用for 语句实现循环,for(i=0; (c=getchar()!=n; i+=c) ;,合法,for( ; (c=getchar()!=n; ) printf(%c,c);,27,5.5 循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套 内嵌的循环中还可以嵌套循环,这就是多

9、层循环 3种循环(while循环、dowhile循环和for循环)可以互相嵌套,28,5.6几种循环的比较,1.for语句可由while语句构造。 for(表达式1;表达式2;表达式3)语句 等价于: 表达式1; while(表达式2) 语句; 表达式3; ,29,2.for语句和while语句是先判断,后执行。 对于该循环的循环体有可能一次也不执行。 dowhile语句是先执行,后判断。至少 执行一次循环体。,5.6几种循环的比较,30,3.while和do-while语句只在while后指定 循环条件,循环体中应包含使循环结束 的语句(修改循环变量)。 for循环可在表达式3中包含使循环趋

10、于结 束的语句(修改循环变量),甚至可将循环 体全部放入表达式3中。凡用while循环能 实现的,用for循环都能实现!,5.6几种循环的比较,31,4.while和do-while语句的循环初始化应在 while和do-while语句前完成。 for循环的循环初始化可以在表达式1中实 现。,5.6几种循环的比较,32,5. 在for和while语句之后一般没有分号,有分号 表示循环体就是分号之前的内容(空循环体) 例如:while (i 100);i+; for (i = 0; i 100; i+);printf(%d, i); 另外,for通常有一个循环变量控制循环的次数, 不要在循环体内

11、改变这个变量。,5.6几种循环的比较,33,永远不会退出的循环为死循环 for (;) while (1) do while (1) 绝大多数程序不需要死循环 一般情况下,要极力避免死循环 时间过长的循环会造成“假死”效果,死循环,34,5.7 改变循环执行的状态,5.7.1 用break语句提前终止循环 5.7.2 用continue语句提前结束本次循环 5.7.3 break语句和continue语句的区别,35,5.7.1 用break语句提前终止循环,break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。 例5.4 在全系1000学生中,征集慈善募捐,当总

12、数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。,36,5.7.1 用break语句提前终止循环,编程思路: 循环次数不确定,但最多循环1000次 在循环体中累计捐款总数 用if语句检查是否达到10万元 如果达到就不再继续执行循环,终止累加 计算人均捐款数,37,5.7.1 用break语句提前终止循环,编程思路: 变量amount,用来存放捐款数 变量total,用来存放累加后的总捐款数 变量aver,用来存放人均捐款数 定义符号常量SUM代表100000,38,#include #define SUM 100000 int main() float amount,ave

13、r,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(num=%dnaver=%10.2fn,i,aver); return 0; ,指定符号常量SUM代表100000,应该执行1000次,达到10万,提前结束循环,实际捐款人数,39,#include #define SUM 100000 int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; aver=total / i ; printf(num=%dnaver=

14、%10.2fn,i,aver); return 0; ,只能用于循环语句和switch语句之中,而不能单独使用,40,重点回顾,死循环:永远不会退出的循环 break语句:从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。,41,5.7.2 用continue语句提前结束本次循环,有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环。这时可以用continue语句 例5.5 要求输出100200之间的不能被3整除的数。 编程思路: 对100到200之间的每一个整数进行检查 如果不能被3整除,输出,否则不输出 无论是否输出此数,都要接着检查下一个数(直到200

15、为止)。,42,N,n=100,n200,Y,n能被3整除,N,n=n+1,输出n,Y,for(n=100;n=200;n+) if (n%3=0) continue; printf(%d ,n); ,43,5.7.3 break语句和continue语句的区别,continue语句只结束本次循环,而不是终止整个循环的执行 break语句结束整个循环过程,不再判断执行循环的条件是否成立,44,N,表达式1,Y,表达式2,N,Y,N,表达式1,Y,表达式2,N,Y,break语句,continue语句,强行退出循环,只结束本次循环,45,例5.6 输出以下4*5的矩阵。 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 解题思路: 可以用循环的嵌套来处理此问题 用外循环来输出一行数据 用内循环来输出一列数据 按矩阵的格式(每行5个数据)输出,第一行*2,第一行*3,第一行*4,46,#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (n); printf (%dt,i*j); printf(n); return 0; ,47,#include int main() int i,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号