C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计

上传人:E**** 文档编号:89386263 上传时间:2019-05-24 格式:PPT 页数:34 大小:269KB
返回 下载 相关 举报
C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计_第1页
第1页 / 共34页
C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计_第2页
第2页 / 共34页
C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计_第3页
第3页 / 共34页
C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计_第4页
第4页 / 共34页
C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计能力教程(第二版) 教学课件 ppt 作者 赵凤芝 第5章 循环结构程序设计(34页珍藏版)》请在金锄头文库上搜索。

1、第五章 循环结构程序设计,第一节 为什么使用循环,算法1:直接写出算式 sum=1+2+3+4+5+100,算法2:考虑到1+2+3+100可以改写为: (1+2)+3)+100),则有 S1:p1=0+1 S2: p2=p1+2 S3: p3=p2+3 S99: p99=p98+99 S100: p100=p99+100 ,结果在p100里。,算法3:考虑用变量i存放加数,变量p存放上一步 的和。那么每一步都可以写成:p+i,然后 让p+i的和存入p,即每步都是p=p+i。 S0: p=0,i=1 S1: p=p+i, i=i+1 S2: p=p+i, i=i+1 S3: p=p+i, i=

2、i+1 S100: p=p+i, i=i+1,算法4:在上面的算法基础上采用循环功能实现。 S0: p=0,i=1(循环初值) S1: p=p+i, i=i+1(循环体) S2: 如果i小于或等于100,重复执行步 骤S1及S2;否则,算法结束(循环 控制)。p中的值就是1+2+100 的值。,while语句,1形式 : while (表达式) 语句 2作用 : 实现“当型”循环, 当条件 满足时,执行语句 3特点 : 先判断表达式,后执行语句,第二节 while语句与do while 语句,题目分析:sum=1+2+3+100 变量设定: sum 存放计算的中间结果和最后结果, i 存放被加

3、数 ; 算法分析: 1. 开始:sum=0, i=1 2. 如果满足条件 i = 100,则执行3,否则转5; 3. 反复累加, 迭代式子:sum=sum+ i; 被加数 i 的变化规律: i=i+1; 4. 转2继续; 5. 结束循环,输出结果。,例5.1 用 while 语句求,#include main( ) int i,sum; sum=0; i=1; while ( i=100 ) sum=sum+ i; i = i+1; printf(“sum=%d“,sum); ,循环初值,循环条件,循环体 累加迭代式子,例5.1 用 while 语句求,2作用:实现“直到型”循环 3特点:先执

4、行语句,后判断条件, 直到条件不满足为止。,dowhile语句,1形式: do 语句 while(表达式);,循环体语句,条件表达式,循环体语句,条件表达式,do_while语句的图形表达,真,假,main( ) int i,sum=0; i=1; do sum=sum+i; i+; while (i=100); printf(“sum=%d”,sum); ,例5.2 用do_while 语句实现 1+2+3+100,两种循环语句形式的比较,用while语句实现 main() int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“sum=

5、%d“,sum); 运行结果:sum=5050,用do-while语句实现 main() int i,sum=0; i=1; do sum=sum+i; i+; while (i=100); printf(“sum=%d“,sum); 运行结果:sum=5050,for(表达式1;表达式2;表达式3) 循环体;,表达式1; while(表达式2) 循环体; 表达式3; ,第三节 for语句实现,一般形式,for循环执行过程如下:,1)计算表达式1; 2)计算表达式2,若其值为非0(循环条件 成立),则转3)执行循环体;若其值 为0(循环条件不成立),则转5)结束 循环; 3)执行循环体; 4)

6、计算表达式3,然后转2); 5)结束循环,执行for循环之后的语句。,【例5.3】求正整数n的阶乘n!,其中n由用户输入。,程序如下: main( ) float fact=1.0; int i,n; scanf(“%d“, ,main( ) float r,s; int i; float Pi=3.14159; for(i=0,r=0.5;i6;i+,r+) s=Pi*r*r; printf(“nr=%4.1f,s=%f“,r,s); 运行结果: r= 0.5,s=0.785398 r= 1.5,s=7.068578 r= 2.5,s=19.634937 r= 3.5,s=38.484578

7、 r= 4.5,s=63.617199 r= 5.5,s=95.033104,【例5.4】写一个程序,计算半径分别为0.5mm, 1.5mm,2.5mm,3.5mm,4.5mm,5.5mm时 圆的面积。,main( ) float r,s; float Pi=3.14159; for(r=0.5;r=5.5;r+) s=Pi*r*r; printf(“nr=%4.1f,s=%f“,r,s); 运行结果: r= 0.5,s=0.785398 r= 1.5,s=7.068578 r= 2.5,s=19.634937 r= 3.5,s=38.484578 r= 4.5,s=63.617199 r=

8、5.5,s=95.033104,第四节 几种循环的比较,例如:求1到100之间不能被3整除的数,用三种循环均可实现。,/*用while语句实现*/ main( ) int i=1; while(i=100) if (i%3!=0) printf(“%4d“,i); i+; ,/*用for语句实现*/ main( ) int i; for(i=1;i=100;i+) if (i%3!=0) printf(“%4d“,i); ,/*用do-while语句实现*/ main( ) int i=1; do if (i%3!=0) printf(“%4d“,i); i+; while(i=100); ,

9、(6)三种基本循环结构一般可以相互替代,不能说 哪种更加优越。具体使用哪一种结构依赖于程 序的可读性和程序设计者个人程序设计的风格。,(1)循环变量初始化:while和do-while的循环变 量初始化在while和do-while语句之前完成; 而for循环变量初始化可以在表达式1中完成。,(2)循环条件:while和do-while循环只在while后 面指定循环条件;而for循环在表达式2中指定。,(3)循环变量修改使循环趋向结束:while和do-while 循环要在循环体内包含使循环趋于结束的操作; for循环可以在表达式3中完成。,(4)for循环可以省略循环体,将部分操作放到表

10、达式2,表达式3中,for语句功能强大。,(5)while和for循环先测试表达式,后执行循环体, 而do-while是先执行循环体,再判断表达式。,第五节 多重循环(嵌套循环),一个循环体内又包含另一个完整的循环结构, 即循环套循环叫多重循环(“嵌套循环”)。 按照循环的嵌套次数,分别称为二重循环、 三重循环。一般将处于内部的循环称为内循环, 处于外部的循环称为外循环。一般单重循环只有 一个循环变量,双重循环具有两个循环变量,多 重循环有多个循环变量。,【例5.5】打印九九乘法表 11=1 12=2 19=9 21=2 22=4 29=18 31=3 32=6 39=27 91=9 92=1

11、8 99=81,程序如下: main( ) int i,j; for(i=1;i=9;i+) for(j=1;j=9;j+) printf(“%d*%d=%2d“,i,j,i*j); printf(“n“); , 一个循环体必须完完整整地嵌套在另一 个循环体内,不能出现交叉。, 并列循环允许使用相同的循环变量,但 嵌套循环不允许。,关于嵌套循环的说明, 多层循环的执行顺序是:最内层先执行, 由内向外逐层展开。, 三种循环可以互相嵌套。,【例5.6 】用循环语句打印下列图案: * * * * * *,程序如下: main( ) int i,j; for(i=1;i=6;i+) for(j=1;j

12、=20-i;j+) printf(“ “); for(j=1;j=2*i-1;j+) printf(“*“); printf(“n“); ,课后思考: 百钱百鸡问题。用100元钱买100只鸡,每只公鸡5 元,每只母鸡3元,每3只小鸡1元,要求每种鸡至少买 一只,且必须是整只的,问各种鸡各买多少只?,提示: (1)这是一个组合问题; (2)设 i,j,k分别表示公鸡、母鸡和小鸡的只数。为了确定 i,j,k的取值范围,可以有不同方法; 方法一:i:120;j:133;k:1100;依据价钱确定 出公鸡、母鸡和小鸡的只数:i,j,k的取值范围。 方法二:i:118;j:131;k:100-i-j;假

13、定每种 鸡至少有一只。 方法三:依题意由i+j+k=100及5i+3j+k/3=100得14i+8j=200, 由此可得:i :113;j:123;k=100-i-j; 方法四:由方法三中的14i+8j=200得7i+4j=100可得: i :113;j=(1007i)/4;k=100-i-j;,第六节 break和continue语句,一、break语句,一般形式为: break;,break语句的执行过程: 终止对switch语句或循环语句的执行 (跳出这两种语句),而转移到其后的语 句处执行。,【例5.7 】从键盘上连续输入字符,并统计 其中大写字母的个数,直到输入 “换行”字符时结束。

14、,程序如下: #include “stdio.h“ main( ) char ch; int sum=0; while(1) ch=getchar(); if(ch= =n) break; if(ch=A,关于break语句的说明,break语句只用于循环语句或switch语句中。 在循环语句中,break常常和if语句一起使 用,表示当条件满足时,立即终止循环。注 意break不是跳出if语句,而是跳出循环结构。 (2) 循环语句可以嵌套使用,break语句只能跳出 (终止)其所在的本层循环,而不能完全跳出 多层循环。要实现逐层跳出多层循环可以设 置一个标志变量,控制跳出循环。,二、cont

15、inue语句,一般形式: continue;,continue语句的功能是结束本次循环。即跳 过本层循环体中余下尚未执行的语句,接着进行 下一次循环条件的判定。 注意:执行continue语句并没有使整个循环终止。,【例5.8 】从键盘输入10个字符,并统计其中 数字字符的个数。,程序如下: #include “stdio.h“ main( ) int count=0,i; char ch; for(i=0;i9) continue; count+; printf(“count=%d“,count); 输入:AS2F37#GF9,第七节 循环结构程序设计举例,【例5.9】读入10个数,编写程序求其中的最大值。,程序如下: main( ) int i=0; float x,max; printf(“nPlease input data:“); scanf(“%f

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

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

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