C语言的二重循环.doc_第1页
C语言的二重循环.doc_第2页
C语言的二重循环.doc_第3页
C语言的二重循环.doc_第4页
C语言的二重循环.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.2 多重循环程序设计案例案例5.4 九九乘法表【项目任务】实现九九乘法表。【设计思路】实现九九乘法表的流程图如图5-3所示。图5-3 九九乘法表流程图【程序代码】#include main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); /*换行,整个九九乘法表有9行,所以该语句应被执行9次*/ 【运行结果】1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81【知识拓展】1一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。2在一个循环体内如果有多个语句,应该用大括号括起来,这样就构成了复合语句。案例5.5 金字塔图形【项目任务】输出以下图形。 * * * * *【设计思路】从以上图形可以看出,每一行的星号数为该行行数乘以2再减1,每一行前面的空格数为5减去该行行数。用变量i控制行数,用变量j控制行前的空格数以及打印的星号数,循环5次。【程序代码】#include main() int i,j; for(i=1;i=5;i+) for(j=1;j=5-i;j+) /*打印5-i个空格*/ printf( ); for(j=1;j=2) 当j=1或j=n+1时,其值为1。当j!=1且j!=n+1时,其值为第n-1行的第j-1个值与第j个值之和。【程序代码】#include #define N 6main() int n,i,j,k,aNN; for(i=0;iN;i+) ai0=1; aii=1; for(i=2;iN;i+) /*从第3行开始*/ for(j=1;j=i-1;j+) /*从第2列开始*/ aij=ai-1j-1+ai-1j; for(i=0;iN;i+) for(j=0;j 0; i-) for (j = 0; j 6; j+) count+; 首先进入外层循环,然后进入内层循环!第一步i=4当j=0时count=1,j=1时count=2,j=2时count=3,j=3时count=4,j=4时count=5,j=5时count=6,j=6时,由于不满足条件,然后执行外层循环第二步i=3之前的count=6,现在有继续执行内层循环,所以当j=0时count=7,j=1时count=8,j=2时count=9,j=3时count=10,j=4时count=11,j=5时count=12,j=6时,由于不满足条件,然后执行外层循环第三步i=2之前的count=12,现在有继续执行内层循环,所以当j=0时count=13,j=1时count=14,j=2时count=15,j=3时count=16,j=4时count=17,j=5时count=6,j=18时,由于不满足条件,然后执行外层循环第四步i=1之前的count=18,现在有继续执行内层循环,所以当j=0时count=10,j=1时count=20,j=2时count=21,j=3时count=22,j=4时count=5,j=23时count=6,j=24时,由于不满足条件,然后执行外层循环第五步i=0不满足条件,所有循环执行结束如果在第二个循环内打印结果输出的就是:1,2,3,.24;如果是在第一个循环中打印结果输出的是:6,12,18,24;不好意思,写错了一个地方 下面的是正确的 第三步i=2 之前的count=12,现在有继续执行内层循环,所以当j=0时count=13,j=1时count=14,j=2时count=15,j=3时count=16,j=4时count=17,j=5时count=18,j=6时,由于不满足条件,然后执行外层循环 第四步i=1 之前的count=18,现在有继续执行内层循环,所以当j=0时count=10,j=1时count=20,j=2时count=21,j=3时count=22,j=4时count=5,j=23时count=24,j=6时,由于不满足条件,然后执行外层循环第二个循环输出时循环了24次,第一个循环输出时循环了4次用二重循环打印图形教学设计(2010-04-23 10:02:28) 转载标签: 杂谈分类: 教学论文 用二重循环打印图形教学设计江苏省盐城中学信息教研组 周勇军一、教材分析“用二重循环打印图形”是高中信息技术选修算法与程序设计第二章2.3.3循环结构中的内容。本文要说的二重循环是建立在一重循环的基础之上的,虽然内容不多,但是用它来实现图形打印,内外循环就被赋予了特殊的含义,即控制行数和每行的字符数。由于图形的多样性,就需要灵活设置内外循环的变化范围。为了让学生从根本上掌握各种图形的打印方法,让学生学会总结图形规律,理解用二重循环打印图形的原理是非常重要的。二、教学目标1、知识与技能熟练掌握二重循环语句For Next 的基本格式,并能运用它打印图形理解Tab ( ) 函数的含义并能进行运用学会用数学函数思想归纳变量与定量之间的关系表达式2、过程与方法通过打印各种“*”型图形,让学生能熟练运用二重循环3、情感态度与价值观通过图形打印,增强学生对程序设计的兴趣,提高分析问题解决问题的水平三、教学重点与难点教学重点根据”*”型的排列情况,运用数学函数思想总结其规律,灵活运用二重循环语句实现图形打印教学难点根据”*”型的排列情况,运用数学函数思想总结其规律四、学生分析学生已经学习了一重循环的基本格式,并且能够编写相应程序,具备了用二重循环解决问题的能力基础,加上以图形打印为载体,更能激发他们学习的浓厚兴趣。五、教学环境网络机房、VB 6.0,投影。六、教学策略本节课以解决二重循环打印图形问题为主线,采用层层深入和自主探究为主要模式,以教师为主导,学生为主体,让学生积极主动地思考问题、解决问题,从而达成学习目标。七、教学过程一、创设问题情境,引入新课师:有这样一条VB语句:print “*”;,大家思考一下它的执行结果?生:在vb窗体打印一个*。师:这里的;有什么作用?生:后面打印的内容紧跟此*显示,不换行。For j = 1 To 4 step 1Print “*”;Next j师:如果将这条语句(print “*”;)作为如下循环语句的循环体,运行结果是什么? For j = 1 To 4 step 1循环体Next j生:在vb窗体打印4个连续的*。For i = 1 To 4 step 1For j = 1 To 4 step 1Print “*”;Next jNext i师:如果将这里的循环语句,再作为如下循环语句的循环体,这样写行不行呢?会产生运行结果吗? For i = 1 To 4 step 1循环体Next i生:行,在vb窗体打印16个连续的*。师:大家可以看到这里出现了比较特殊的情况,即循环语句套循环语句的情况,这就是“二重循环”。二、二重循环语句格式师:根据此例,可以总结出二重循环语句的基本格式为:For 循环变量 = 初值 To 终值 For 循环变量 = 初值 To 终值 循环体Next 循环变量Next 循环变量师:刚才这个例子,执行结果是打印16个连续的*,如果要将16个*分成4行,代码该如何修改呢?大家还记得前面讲过的实现换行的语句吗?生:用printFor i = 1 To 4 step 1For j = 1 To 4 step 1Print “*”;Next jPrintNext i For i = 1 To 4 step 1For j = 1 To 4 step 1Print “*”;Next jNext i师:教师在vb环境里执行这段代码,执行结果是打印出4行4列的*型图形,这是通过二重循环打印出的一个矩形图形。我们进一步分析可以看出,这里的i变化范围是1到4,即为外循环变量,用来控制打印的行数,这里的j变化范围是1到4,即为内循环变量,用来控制每行打印的字符数,从这个角度来说,这里的内外循环变量(i、j)就有了实际的意义,即i控制行数,j控制每行字符数。师:请大家上机练习,用二重循环打印一个4行5列的*型图形。生:学生上机实践。For i = 1 To 4 step 1For j = 1 To 5 step 1Print “*”;Next jPrintNext i学生操作,教师巡视。教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。师:显然这里的矩阵图形是一个规则的图形(每行字符数相同),如果是一个三角形(每行字符数不同如图一)好不好打印呢?(图一) 三、二重循环的进一步运用(1)(图一)图形的打印(每行字符数不同)师:大家看(图一)是一个三角形,共4行,但每行的字符数不一样多,外循环应该没问题,那内循环应怎么设置呢?进一步分析,可以看到虽然每行字符数不一样,是一个变量,但变化是有规律的。那我们考虑能不能找出它跟行数的一个对应关系呢?我们从图一中采集行数和相应字符数的一个信息列表如下:i(行号)j (字符数)11223344分析此表,我们可以用数学中一次函数的思想(i为自变量,j为函数值)来建立j和i的关系表达式。从而得到:j=i,所以可以得到如下代码:(图二)For i = 1 To 4 For j = 1 To i Print “*”;Next jPrintNext i师:教师在vb环境里执行此代码,执行结果正如如图一。(2)(图二)图形的打印(每行字符数不同,每行起始*位置不同)师:看(图二),也是一个三角形,不同的是每行第一个字符的起始位置不一样,是一个变量,这样的图形应该怎么打印呢?师:这里要用到一个函数tab(),此函数用来控制输出字符的位置。请大家体验下面一段代码的作用。生:上机输入如下代码,体会tab函数的作用。Print 1234567890Print Tab(2);Print *Print Tab(4);Print *师:大家通过实践,可以发现Tab()函数的自变量就表示输出的具体位置。师:显然图二中,每行的字符数是变的,每行第一个字符的起始位置也是变的,跟刚才的分析方法一样,要建立关系式。i起始*位置(n)j141232323414分析此表,我们可以用数学中一次函数的思想(i为自变量,j为函数值,n为函数值)来建立j和i的关系表达式,n和i的关系表达式。从而得到:j=i,n=5-i,所以可以得到如下代码:For i = 1 To 4Print Tab(5 i );For j = 1 To i Print “*”;(图三)Next j PrintNext i师:教师在vb环境里执行此代码,执行结果正如如图二。四、学生自主探究师:教师布置任务打印如图三所示图形For i = 1 To 4 Print Tab(9 2*i); For j = 1 To 2 * i - 1 Print *; Next j PrintNext i生: i起始*位置(n)j171253335417可以归纳出:n=9-2*I j=2*i-1学生操作,教师巡视。教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。(图四)五、师生共同探究 师:教师布置任务打印如图四所示图形生:采取“分而治之”的方法进行处理,即将图形分为上三角和下三角分别进行打印,然后进行合并形成图四所示的形状。参考代码略师:大部分同学采用分块处理的方法来实现打印,这样做易于理解但代码较繁琐,能不能简化一下呢?能否通过一个二重循环语句就能实现呢?这个图形一共7行,如果i的范围取1到7难以归纳n和j的表达式,但稍微观察一下,可以发现此图是一个对称图形,所以行i的范围可以取-3到3,行作为定量可以表示成abs(i),再依此建立关系就方便了。For i = -3 To 3Print Tab(2* Abs(i)+4);For j = 1 To 7 2*Abs(i)Print *;Next jPrintNext i分析与参考代码如下: Abs(i)起始*位置(n)j371253135017可以归纳出:n=2*abs(i)+4,J=7-2*abs(i)师:教师在vb环境里执行此代码,执行结果正如如图四。六、教师总结这节课我们通过二重循环打印了几种图形,通过学习可以发现打印的关键就是对图形中行和列及打印位置的控制。实际上这些图形还可以变化成很多种其他图形,但只要我们能总结行和列、打印位置的规律,找出它们的内在关系,写出相应的关系式,那么要实现种种图形的打印是不难的。六、教学反思这节课的引入本来是直接给学生展示一个用二重循环语句打印的完整图形,但发现学生不能一下子接受,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论