计算机精品课件:第4章-循环结构程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机精品课件:第4章-循环结构程序设计.ppt》由用户(金钥匙文档)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 精品 课件 循环 结构 程序设计
- 资源描述:
-
1、1,第4章 循环结构程序设计,4.1 用while语句实现循环 4.2 用do-while语句实现循环 4.3 用for 语句实现循环 4.4 循环的嵌套 4.5 break语句与continue语句 4.6 程序举例,2,“如果你能证明自己发疯,那就说明你没疯” 约瑟夫赫勒第二十二条军规,3,用来形容: 任何自相矛盾、不合逻辑的规定或条件所造成的无法摆脱的困境、难以逾越的障碍。 表示人们处于左右为难的境地: 或者是一件事陷入了死循环; 或者跌进逻辑陷阱等等;,4,为什么需要循环控制,在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题 例如:全班有50个学生,统计各学生三门课的平均
2、成绩。,5,scanf(“%f,%f,%f”,输入学生1的三门课成绩,并计算平均值后输出,输入学生2的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,要对50个学生进行相同操作,重复50次,处理过程:,6,大多数的应用程序都会包含循环结构 循环结构和顺序结构、选择结构是结构化程序设计的三种基本结构,它们是各种复杂程序的基本构造单元,7,4.1 while语句,全班有50个学生,统计各学生三门课的平均成绩。,8,i=1,i50,输入一个学生成绩,求一个学生平均成绩,输出一个学生平均成绩,i增1,Y,N,用while循环结构实现,while(i=50) scanf ; aver=
3、 ; printf ; i+; ,9,while语句是用来实现“当型”循环结构的。 一般形式:while(表达式) 语句,说 明:当表达式的值为“非0”时,执行while语句中的内嵌语句。 特 点:先判断表达式,后执行语句。,10,说明: 只有一个出口 执行语句后要返回到判断处,11,例4.1 求1+2+3+100,即 解题思路: 这是累加问题,需要先后将100个数相加 要重复100次加法运算,可用循环实现 后一个数是前一个数加1而得 加完上一个数i后,使i加1可得到下一个数,12,13,14,程序如下: int main() int i,sum=0; i=1; while(i=100) pr
4、intf(“%d”,sum); return 0;, sum=sum+i ; i+ ; ,15,说明:要注意2个问题 (1)循环体只能是1条语句 若超过1条,应用复合语句 (2)循环结构中应该有使循环体结束的条件 (本例中的 i+;),否则构成死循环 (3)若无 复合语句 ,则只执行sum=sum+i;就会变成死循环,16,do while语句是用来实现“直到型”循环结构的。 一般形式: do 循环体语句 while(表达式) ;,特 点: 先执行循环体,后判断条件是否成立。 若 表达式的值为“1”,返回去重新执行循环体,直到表达式的值为“0”,如图。,4.2 do-while语句,17,18
5、,例4.2 用 do while 语句求和。,19,int main() int i,sum=0; i=1; do sum=sum+i ; i+; while (i=100) ; printf(“%d”,sum) ; return 0; ,程序如下:,20,可以看到: (1)对同一个问题,可以用while语句处理, 也可用do while语句处理。 (2)do while 结构可以转换成 while 结构。 (3)比较下图。,21,虚框内为while结构,即do while 结构是由一个循环体语句加上一个while 结构组成的。,22,提示: 用while语句和do while语句处理同一问题
6、时: 1)若二者的循环体部分相同,则结果也相同。 2)但是在while后面的表达式一开始就为假时, 两种循环的结果是不同的。,23,再运行时:输入11回车,输出,例 while和do while循环的比较 int main() int sum=0,i; scanf(“%d”, 运行时:输入1 回车,输出sum=55,第一次进入循环时,条件为真,sum=0,第二次进入循环时,条件为假,24,再运行时:输入11回车,输出,int main() int sum=0,i; scanf(“%d”, 运行时:输入1 回车,输出sum=55,第一次进入循环时,条件为真,sum=11,第二次进入循环时,条件为
7、假,25,在循环次数不确定时(即只给出循环结束条件的情况),可使用for语句。,while语句一般用于循环次数已知或可确定的情况。 如:i=1; while(i=100),for语句可以完全代替while语句。,一般形式: for(表达式1;表达式2;表达式3) 语句,4.3 for 语句,26,执行过程: (1)先求解表达式1。 (2)再求解表达式2: (3)求解表达式3。 (4)转回过程(2),继续执行。 (5)结束循环,执行 for 语句后面的过程。,若为真,则执行 for 语句指定的内嵌语句,然后再求解表达式3。 若为假,则结束循环,执行 for 语句后面的过程。,27,28,for
8、语句的最简单的应用形式: for(循环变量初值;循环条件;循环变量增值) 语句,相当于: i=1 ; while(i=100) sum=sum+i ; i+ ; ,例如: for(i=1 ; i=100 ; i+) sum=sum+i ;,29,对于for语句的一般形式,也可改用while循环形式: 表达式1; while(表达式2) 语句 表达式3; ,相当于 for 语句中的表达式1,2,3,While的循环结构,while(表达式2) 语句 表达式3; ,30,说明: (1)for 语句一般形式中的“表达式1”可以省略。 但前提是应在执行 for 语句前为循环变量赋初值。,例如: i=1
9、; for ( ;i=100 ;i+ ) sum=sum+i;,但绝对不能省略分号;,31,说明: (2)若省略了表达式2,循环将无终止地进行下去,相当于: i=1; while(1) sum=sum+i; i+; ,例如: for(i=1;i+) sum=sum+i;,即始终认为表达式2的值为真,32,说明: (3)表达式3也可省略,只需保证循环能正常结束,例如: for(i=1;i=100 ;) sum=sum+i; i+;,若增量不变,i=100的条件 永远为真。,33,说明: (4)由上可见,若省略表达式1和表达式3, 即只给出循环条件,则完全等同于 while 语句,例如: for(
10、 ;i=100 ;) sum=sum+i; i+; 相当于:while (i=100) sum=sum+i; i+;,34,说明: (5) 3个表达式同时省略。 例如: for( ;) 相当于:while(1),35,说明: (6)表达式1可以是与循环变量无关的其它表达式 例如: for(sum=0;i=100;i+) sum=sum+i,同理:表达式3也可是与循环控制无关的任意表达式,且可以是逗号表达式。 例如: for( i=0,j=100;m=n;i+,j- -) k+=i * j;,36,说明: (7)表达式可以是: 关系表达式 如 ( i=100) 或逻辑表达式 如(ab&xy) 或
11、数值表达式 或字符表达式,37,例: for(i=0;(c=getchar()!=n;i+=c) ;,循环体为一个空语句。 既由表达式完成应在循环体中进行的操作。,38,例: for(;(c=getchar()!=n ;) printf(“%c”,c);,1)省略表达式1和3 2)作用是输入一个字符后,立即输出该字符。 3)只有当输入一个换行符为止。,39,定义: 在一个循环体内又包含另一个完整的循环结构, 称为循环的嵌套。 内嵌的循环中还可以嵌套循环。 三种循环(while、do while、for)可以互相嵌套,4.4 循环嵌套,40,注意:合法的嵌套形式 (1) while() whil
12、e() ,先判断,为真则执行循环体。,(2) do do while(); while();,先执行循环体,再判断条件,为真,再执行循环体。,41,(3) for( ;) for( ;) ,先求表达式1,再求表达式2,为真,执行循环体。,(4) while() do while(); ,先判断条件,为真,再执行循环体。,先执行循环体,再判断条件。,42,(5) for( ;) while( ) ,(6) do for( ;) while( );,43,例4.4 编写程序,输出乘法口诀表。 #include int main() int i,j; for(i=1;i10;i+) for(j=1;
13、j=i;j+) printf(“%d*%d=%-4d“,j,i,i*j); printf(“n“); return 0; ,44,(1)3(4)种循环都可用来处理同一问题。 且一般情况下可互相代替。 (2)while和do while循环,只在while后面指定循环条件。而使循环趋于结束的语句包含在循环体中。 for循环则在表达式3中包括使循环趋于结束的操作,甚至可把整个循环体全部放在表达式3中 用while和do while能完成的,用for均可实现,几种循环的比较,45,(3)用while 和do while循环时,控制循环结束的变量的初始化应该在这两个语句之前完成。 for 则在表达式1
14、中实现循环变量的初始化。 (4)对于 while、do while、for 结构: 用break语句跳出循环 用continue结束本次循环。 而对于goto if 语句的循环,则不能用上述两个语句。,46,4.5 break语句与continue语句 改变循环执行的过程,47,4.5.1 用break语句提前终止循环,一般形式: break;,作用: 在switch语句中用于跳出结构,继续执行switch下面的语句。 在循环中,用于实现跳出循环结构(即提前结束循环),接着执行循环下面的语句。,48,例 在全系1000学生中,征集慈善募捐,当捐款总数达到10万元时就结束,统计此时捐款的人数,以
15、及平均每人捐款的数目。,49,编程思路: 循环次数不确定,但最多循环1000次 在循环体中累计捐款总数 用if语句检查是否达到10万元 如果达到就不再继续执行循环,终止累加 计算人均捐款数,50,编程思路: 变量i,用来存放捐款人数 变量amount,用来存放某人的捐款数 变量total,用来存放累加后的总捐款数 变量aver,用来存放人均捐款数 定义符号常量SUM代表目标金额100000,51,#include #define SUM 100000 int main() float amount,aver,total; int i; aver=total/i; printf(“num=%dn
展开阅读全文