电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C程序设计 教学课件 ppt 作者 赵山林 7

35页
  • 卖家[上传人]:E****
  • 文档编号:89343323
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:282.50KB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第7章 循环结构程序设计,7.1 循环的概念 7.2 实现循环的语句 7.3 break和continue语句 7.4 循环的嵌套 7.5 循环结构程序设计举例,7.1 循环的概念,当所要解决的问题存在重复执行内容时,应该使用循环结构来实现,具体的设计步骤可归纳如下。 (1)构造循环体。将问题中需要重复执行的部分,利用C语言规则归纳出一组程序段。在归纳的过程中应充分利用变量是一个变化的量的概念。如本列中变量score在不同的时刻代表的是不同学生的成绩。,(2)寻找控制循环的变量。有的题目循环的次数是确定的,可以使用计数器来控制循环;有的题目循环的次数不是确定的,那么使用计数器就不合适了,设计者应从题目中去寻找规则变化的量来控制循环体完成规定的次数。 (3)找出控制变量的3个要素。 循环控制变量的初值。 循环的条件。 使循环趋于结束的部分。,7.2 实现循环的语句,7.2.1 while语句 while语句是实现当型结构循环的语句,其一般形式为 while(逻辑量) 循环体语句 其中,while是C语言的关键字,语句中的逻辑量为循环条件。 while语句的流程图如图7.2所示。,使用wh

      2、ile语句实现循环时,语句中的逻辑量对应于循环条件P,循环体语句对应于循环体A。while语句执行时,首先判断逻辑量的值,如果逻辑量为1,则首先执行循环体语句,然后继续判断逻辑量;如果逻辑量为0,则结束循环,执行循环的后续语句。,例7.3 求1到100的和。 根据流程图写出程序: main() int i,sum; sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%dn“,sum); ,图7.3 例7.3的N-S流程图,例7.4 求n!。 main() float fac; int i,n; fac=1; i=2; scanf(“%d“, ,图7.4 例7.4的N-S流程图,7.2.2 do-while语句 do-while语句是实现直到型循环结构的语句,其一般形式为: do 循环体语句 while(逻辑量); do-while语句的流程图如图7.6所示。,使用do-while语句实现循环时,语句中的逻辑量对应于循环条件P,循环体语句对应于循环体A。do-while语句执行时,首先执行循环体语句,然后判断逻辑量,如果逻辑量为1,则继续执行

      3、循环体语句;如果逻辑量为0,则结束循环,执行循环的后续语句。,例7.9 求两个数的最大公约数。,(a)当型结构 (b)直到型结构 图7.8 例子的两种结构的N-S图,根据流程图可得到程序: main() main() int m,n,r; int m,n,r; scanf(“%d,%d“, ,7.2.3 for语句 for语句是实现当型循环结构的语句,for语句是语言所提供的功能更强、使用更广泛的一种循环语句。其一般形式为: for(表达式1;逻辑量;表达式2) 循环体语句; 表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。逻辑量通常是循环条件,一般为关系表达式或逻辑表达式,也可以是任意“确定的值”。表达式2通常是使循环趋于结束的部分,一般是赋值表达式。,for 语句对应的传统流程如图7.9所示。 for语句的执行过程如下: (1)求解表达式1。 (2)判断逻辑量,如果为1,则执行循环体语句,然后执行第3步;如果为0,则结束循环,执行循环的后续语句。 (3)求解表达式2。转向第2步执行。 从for语句的形式可以看出for后

      4、的括号内三项内容分别对应于循环的三要素,能清晰地描述循环。我们可以采取图7.10所示的方式来描述for语句对应的N-S流程图。,图7.9 for 语句的传统流程图 图7.10 for语句的N-S流程图,例7.11 求 。,main() float sum=0,s=0; float x,h; scanf(“%f“, ,图7.11 例7.11的N-S流程图,使用for语句应注意以下几点。 (1)for语句中的各表达式都可省略,但间隔符分号不能省略。 例如: for(;逻辑量;表达式2) 省去了表达式1。 for(表达式1;表达式2) 省去了逻辑量。 for(表达式1; 逻辑量;) 省去了表达式2。 for(;) 省去了全部表达式。 (2)在循环变量已赋初值时,可省去表达式1。,例7.12 main() int a,n; a=0; scanf(“%d“, (3)可省去表达式2,应该在循环体部分增加使循环趋于结束部分。,例7.13 main() int a,n; a=0; for(n=9;n0;) printf(“%8d“,a*a); n-; printf(“n“); ,(4)省略逻辑量,则循

      5、环条件为真,那么在循环体中应有循环结束语句,否则是死循环。 (5)省略表达式1和表达式2,for语句相当于while语句。,例7.14 main() /*计算xn */ float x,xexpn; int n,i; scanf(“%f,%d“, ,(6)循环体可以是空语句。 例7.15 #include “stdio.h“ main() int count; count=0; printf(“input a string:n“); for(;getchar()!=n;count+); printf(“%dn“,count); 无论for语句如何省略括号内的内容,循环的三个要素是必须要体现的,所以在使用for语句时,要充分理解for语句的执行过程。,7.3 break和continue语句,7.3.1 break语句 break语句也可以在循环体中使用,作用是结束循环,继续执行循环的后续语句。break语句的一般形式为: break; 使用break语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。,例7.17 判断某个一位数是否在一个不高于四位的整数中出现。,图7.12

      6、 例7.17的N-S流程图,main() int m,n; int flag; flag=1; scanf(“%d,%d“, ,7.3.2 continue语句 continue语句只能用在循环体中。 其一般格式是: continue; continue语句的功能是结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环执行。应注意的是,该语句只结束本层本次的循环,并不跳出循环。 使用continue语句时,应该清楚在不同的循环语句中下次循环的起点是什么。在while和do-while语句中,下次循环的起点是判断逻辑量;在for语句中,下次循环的起点是计算表达式2的值。,例7.18 输出11000之间能被3、5、7同时整除的数。 main() int n; for(n=1;n=1000;n+) if (n%3!=0) continue; if (n%5!=0) continue; if (n%7!=0) cntinue; printf(“%8d“,n); printf(“n“); ,7.4 循环的嵌套,当一个循环体内又包含另一个循环结构时,称为循环的嵌套。被嵌入

      7、的循环又可以嵌套其他的循环,这就是多重循环。,例7.19 分析以下循环内外层循环控制变量的变化。 main() int i,j; int mul; for(i=1;i10;i+) for(j=1;j10;j+) mul=i*j; printf(“%d*%d=%-4d“,i,j,mul); printf(“n“); ,程序运行的结果为: 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6

      8、*6=26 6*7=42 6*8=48 6*9=54 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,程序输出的是一个完整的九九乘法表。控制外层循环的循环控制变量是i,控制内层循环的循环控制变量是j。每当i变化一次,j就要从1变化到9,可见内层循环的变化频率是高于外层循环的。在内层循环的循环体内使用的i,j的值正好是i(19),j(19)的各种组合,那么就可以使用嵌套的循环描述组合问题。,7.5 循环结构程序设计举例,例7.20 求ex1x +,图7.13 例7.20的N-S流程图,main() float x,fac,ex,xn; int n; fac=1; ex=1; n=1; xn=1; scanf(“%f“, ,例7.21 求Fibonacci数列的前20项之和。 分析:本例是一种“递推”的题目。所谓“递推”是指在前面一个(或几个)结果的基础上推出下一个结果的方法。,图7.14 例7.21的N-S流程图,根据流程图编写程序: main() float sum; int f1,f2,f3; int i,t; f1=1; f2=1; f3=f1+f2; sum=f1+f2+f3; for(i=4;i=20;i+) t=f2; f2=f3; f1=t; f3=f1+f2; sum+=f3; printf(“%.0fn“,sum); ,

      《C程序设计 教学课件 ppt 作者 赵山林 7》由会员E****分享,可在线阅读,更多相关《C程序设计 教学课件 ppt 作者 赵山林 7》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.