(中职)计算机程序设计(C语言)第五章第6节教学课件工信版.ppt
《(中职)计算机程序设计(C语言)第五章第6节教学课件工信版.ppt》由会员分享,可在线阅读,更多相关《(中职)计算机程序设计(C语言)第五章第6节教学课件工信版.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF(中职)计算机程序设计(C语言)第五章第6节教学课件工信版第五章循环结构程序设计第第5.6循环结构程序设计应用举例循环结构程序设计应用举例5.6.15.6.1循环次数类应用循环次数类应用5.6.25.6.2文本作图类应用文本作图类应用5.6.35.6.3素数类应用素数类应用5.6.45.6.4穷举法应用穷举法应用5.6.55.6.5递推法应用递推法应用5.6.15.6.1循环次数类应用循环次数类应用 有关循环次数类问题的求解,特别是多重循环中循环次数的求解,既是循环结构程序设计的重点也是难点,解此类问题时分两种情况:(1)循环次数固定,直接采用各层循环次数相乘。(2)循环次数随循环变量值
2、的变化而变化,则需要逐层加以计算后累加出各层循环次数,一般要用到“口算”、“心算”来模拟计算机的运算过程。5.6.15.6.1循环次数类应用循环次数类应用【例5.7】写出下面程序的运行结果。#include main()int k,j,m,e=0,f=0,g;for(j=1;j=5;j+)e+;f+;g=0;for(k=1;k=7;k+)e+=1;g+=2;for(m=1;m=10;m+)f+=1;e+=1;g+=1;printf(“e=%d,f=%d,g=%d”,e,f,g);5.6.15.6.1循环次数类应用循环次数类应用【例5.7】写出下面程序的运行结果。程序运行结果:程序运行结果:e=
3、75,f=355,g=15e=75,f=355,g=15说明:这是一个三重循环结构的问题,且每层循环的次数是固定循环的次数是固定的,遇到此类问题,应针对printf输出项一个一个变量值进行求解,可以按输出顺序,先求e的值,找出所有e的地方进行求解,然后再求f和g的值。首先分析外层、中间层和内层循环中的循环次数,则根据循环次数公式n=(b-a)/c+1则可以得出外层循环次数=(5-1)/1+1=5中间层循环次数=外层循环次数*中间层循环次数=5*(7-1)/1+1)=35内层循环次数=中间层循环次数*内层循环次数=35*(10-1)/1+1)=350再分析e,f,g三个变量在各层的中的每循环一次
4、增量大小和次数。e是一个计数器,它的值=在外层循环中每次增加1*次数5=5,在中间层循环中两次都加1为2*中间层次数35=70,内层循环中没有e,所以e=5+70=75。f也是一个计数器,同样在外层循环中每次加1,则得5,中间层循环中没有,内层循环每次增加1*350=350,所以f=5+350=355。g还是一个计数器,由于在外层循环中,每次都赋0,所以只有在最后一次外循环执行时g的值才被累加到值存入内存单元中,所以g的值只有一次中间层循环2*7=14加一次外循环1*1=1,所以g=14+1=15。5.6.15.6.1循环次数类应用循环次数类应用拓展练习拓展练习 通过本例的学习,我们了解了循环
5、结构程序的执行过程,当然,此例是循环次数固定循环次数固定的情况,运算起来还相对简单一些,如果多层循环的次数都不固定,而是随着内外循环变量值的变化而变化,那么循环次数又如何求解呢?5.6.15.6.1循环次数类应用循环次数类应用拓展练习拓展练习例如:写出下面程序的运行结果。#includemain()intk,j,m,e=0,f=0;for(j=1;j=3;j+)e+;for(k=1;k=j;k+)e+=1;for(m=1;m=k;m+)f+=1;printf(“e=%d,f=%d”,e,f);程序运行结果:程序运行结果:e=9,f=10e=9,f=10说明:这也是一个三重循环结构的问题,且每层
6、循环的次数是不固定循环的次数是不固定的,遇到此类问题,还是针对printf输出项一个一个变量值进行求解,可以按输出顺序,先求e的值,找出所有e的地方进行求解,然后再求f的值,但是求解过程要细心。e值求解,它的值=在外层循环中每次增加1*次数3=3,在中间层循环中次数跟i的值有关,当j=1时,循环1次,j=2时,循环2次,j=3时,循环3次,共循环1+2+3=6次,每循环一次增加1*6=6,内层循环没有e,所以e=3+6=9。f值求解,在外层和中间层都没有,内层循环每次增加1,内循环次数跟外层、中间层循环变量取值有关:当j=1时,则k=1,则m共循环1次;当j=2时,则k=1、k=2,则m=1循
7、环1次+m=1、m=2循环2次,共循环1+2=3次;当j=3时,则k=1、k=2、k=3,则当k=1,m=1循环1次;当k=2,m=1、m=2循环共2次;当k=3,m=1、m=2、m=3循环共3次,总共次数=1+2+3=6次;所以f=1*(1+3+6)=10。由此例可以看出内循环次数跟外循环变量取值有关,对于此类问题进行计算时一定要小心,要用到“口算”、“心算”来模拟计算机的运算过程。这也是循环结构应用中循环次数类应用中较难的地方,请读者仔细阅读,认真理解掌握。5.6.15.6.1循环次数类应用循环次数类应用拓展练习拓展练习返回返回5.6.25.6.2文本作图类应用文本作图类应用文本作图类问题
8、,也是C语句中常见的应用之一。这类问题通常用双重循环来完成。一般情况下有一个通用的框架:for(循环变量i)/外循环次数代表图形的行数 for(循环变量是j)/内层第一个循环次数代表图形每行开头的空格数 printf(“”);for(循环变量k)/内层第二个循环次数代表每行输出字符的个数 printf(“?”);/?代表输出的字符,具体内容根据题目要求确定 printf(“n”);/内层循环结束,则一行图形结束,必须要换行 5.6.25.6.2文本作图类应用文本作图类应用*【例5.8】编程打印输出如下图形:程序设计:#include main()int i,j,k;for(i=1;i=5;i+
9、)/外循环5次数代表图形5行 for(k=1;k=5-i;k+)/循环次数随i值增大,每行开头空格减少,图形呈中间往边上变化 printf(“);for(j=1;j=2*i-1;j+)/内层循环次数决定每行图形个数,2*i-1格式表示图形奇数个变化 printf(“*”);/输出的图形符号是“*”printf(“n”);/每行结束换行 5.6.25.6.2文本作图类应用文本作图类应用*【例5.8】编程打印输出如下图形:说明:对于图形类题,要用双重循环实现,外层循环确定图形的行数,内循环可以分成三部分:第一部分是确定图形每行开始的位置,一般用循环输出空格来实现;第二部分是循环输出每行要看到的图形
10、,这是关键部分,也是比较复杂的部分;第三部分是每行图形部分结束了,要换行。5.6.25.6.2文本作图类拓展练习文本作图类拓展练习由上例中我们学习了用双重循环语句实现图形的输出,也了解了图形类问题的设计方法,但是仔细看一下,上图是图形符号都是相同的图形题目,那么,如何图形符号每行或每列不同,则又如何设计呢?例如:用双重循环编程打印输出如下图形:11211232112343211234543215.6.25.6.2文本作图类拓展练习文本作图类拓展练习例如:用双重循环编程打印输出如下图形:1121123211234321123454321程序设计:#include main()int i,j,m,
11、a;for(i=1;i=5;i+)/图形共5行,外循环循环5次 for(j=1;j=6-i;j+)printf(“”);/内循环开始部分用空格来确定后面图形的开始位置 for(m=1;m=2*i-1;m+)/内循环第二部分循环次数跟每行图形数有关 if(m=i)a=m;else a=2*i-m;/先要计算出每行要显示的图形内容,该部分相对比较复杂 printf(“%d”,a);/输出要显示的图形 printf(“n”);/内循环第三部分,每行图形输出结束后换行 5.6.25.6.2文本作图类拓展练习文本作图类拓展练习例如:用双重循环编程打印输出如下图形:11211232112343211234
12、54321 说明:本例是每行、每列的图形符号都不一样的图形题,则解此类题时,主要的是在内部循环中,输出图形部分要重点考虑每次输出的符号要如何设计,才能跟要求的变化一致,这就是图形类问题设计时的难点所在,望读者仔细理解掌握。返回返回5.6.35.6.3素数类应用素数类应用素数是一个数学概念,即如果一个数只能被1和本身整除,那么这个数就是素数。如何判断一个数是不是素数,解决的方法有以下几种:1、从概念出发,用这个数n除以除1 和本身以外的所有数(2到n-1),都不能整除,则n就是素数。2、除以它平方根之前的所有数(2到sqrt(n)),如果都不能整除,则n就是素数。因为对于n要么只能被1和本身整除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计 语言 第五 教学 课件 工信版
限制150内