《2022年C语言的二重循环 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言的二重循环 .pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、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 页,共
2、 18 页 - - - - - - - - - 【运行结果】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
3、=45 6*9=54 7*9=63 8*9=72 9*9=81 【知识拓展】1一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。2在一个循环体内如果有多个语句,应该用大括号括起来,这样就构成了复合语句。案例 5.5 金字塔图形【项目任务】输出以下图形。 * * * *名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 【设计思路】从以上图形可以看出,每一行的星号数为该行行数乘以2 再减 1,每一行前面的空格数为 5 减去该行
4、行数。 用变量 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 行的第 j1 个值与第 j 个值之和。【程序代码】#include #define N 6 main() int n,i,j,k,aNN; for(i=0;iN;i+) ai0=1; aii=1; 名师资料总
5、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - 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
6、,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 时
7、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,
8、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 时,由于名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - 不满足条件,然后执行外层循环第四步 i=1 之前
9、的 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循环结构中的内容。
10、 本文要说的二重循环是建立在一重循环的基础之上的,虽然内容不多, 但是用它来实现图形打印, 内外循环就被赋予了特殊的含义,即控制行数和每行的字符数。 由于图形的多样性,就需要灵活设置内外循环的变化范围。为了让学生从根本上掌握各种图形的打印方法,让学生学会总结图形规律, 理解用二重循环打印图形的原理是非常重要的。二、教学目标1、知识与技能熟练掌握二重循环语句For , Next 的基本格式,并能运用它打印图形理解 Tab ( ) 函数的含义并能进行运用学会用数学函数思想归纳变量与定量之间的关系表达式2、过程与方法通过打印各种“ *”型图形,让学生能熟练运用二重循环名师资料总结 - - -精品资料
11、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - 3 、情感态度与价值观通过图形打印,增强学生对程序设计的兴趣,提高分析问题解决问题的水平三、教学重点与难点教学重点根据”*”型的排列情况,运用数学函数思想总结其规律,灵活运用二重循环语句实现图形打印教学难点根据”*”型的排列情况,运用数学函数思想总结其规律四、学生分析学生已经学习了一重循环的基本格式,并且能够编写相应程序, 具备了用二重循环解决问题的能力基础, 加上以图形打印为载体, 更能激发他们学习的浓厚兴趣
12、。五、教学环境网络机房、 VB 6.0 ,投影。六、教学策略本节课以解决二重循环打印图形问题为主线,采用层层深入和自主探究为主要模式,以教师为主导,学生为主体,让学生积极主动地思考问题、解决问题,从而达成学习目标。七、教学过程一、创设问题情境,引入新课师:有这样一条 VB语句:print “*”; ,大家思考一下它的执行结果?生:在 vb 窗体打印一个 *。师:这里的 ; 有什么作用?生:后面打印的内容紧跟此*显示,不换行。For j = 1 To 4 step 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
13、- - - - - - - 第 9 页,共 18 页 - - - - - - - - - Print “*”;Next j 师:如果将这条语句(print “*”;)作为如下循环语句的循环体,运行结果是什么?For j = 1 To 4 step 1 循环体Next j 生:在 vb 窗体打印 4 个连续的 *。For i = 1 To 4 step 1 For j = 1 To 4 step 1 Print “*”;Next j Next i 师:如果将这里的循环语句,再作为如下循环语句的循环体,这样写行不行呢?会产生运行结果吗?For i = 1 To 4 step 1 循环体Next i
14、 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 18 页 - - - - - - - - - 生:行,在 vb 窗体打印 16 个连续的 *。师:大家可以看到这里出现了比较特殊的情况,即循环语句套循环语句的情况,这就是“二重循环”。二、二重循环语句格式师:根据此例,可以总结出二重循环语句的基本格式为:For 循环变量 = 初值 To 终值 For 循环变量 = 初值 To 终值 循环体Next 循环变量Next 循环变量师:刚才这个例子,执行结果是打印16 个连续的
15、*,如果要将 16 个*分成 4 行,代码该如何修改呢?大家还记得前面讲过的实现换行的语句吗?生:用 print For i = 1 To 4 step 1 For j = 1 To 4 step 1 Print “*”;Next j PrintNext i For i = 1 To 4 step 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 18 页 - - - - - - - - - For j = 1 To 4 step 1 Print “*”;Next j
16、 Next i 师:教师在 vb 环境里执行这段代码, 执行结果是打印出 4 行 4 列的*型图形,这是通过二重循环打印出的一个矩形图形。我们进一步分析可以看出,这里的i变化范围是 1 到 4,即为外循环变量,用来控制打印的行数,这里的j 变化范围是 1 到 4,即为内循环变量,用来控制每行打印的字符数,从这个角度来说,这里的内外循环变量( i 、j )就有了实际的意义,即i 控制行数, j 控制每行字符数。师:请大家上机练习,用二重循环打印一个4 行 5 列的*型图形。生:学生上机实践。For i = 1 To 4 step 1 For j = 1 To 5 step 1 Print “*”
17、;Next j PrintNext i 学生操作,教师巡视。教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。师:显然这里的矩阵图形是一个规则的图形(每行字符数相同),如果是一个三角形(每行字符数不同如图一)好不好打印呢?(图一)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 18 页 - - - - - - - - - 三、二重循环的进一步运用(1)(图一)图形的打印(每行字符数不同)师:大家看(图一)是一个三角形,共4 行,但每行的字符数不一样多
18、,外循环应该没问题, 那内循环应怎么设置呢?进一步分析,可以看到虽然每行字符数不一样,是一个变量, 但变化是有规律的。 那我们考虑能不能找出它跟行数的一个对应关系呢?我们从图一中采集行数和相应字符数的一个信息列表如下:分析此表,我们可以用数学中一次函数的思想(i 为自变量, j 为函数值)来建立 j 和 i 的关系表达式。从而得到:j=i ,所以可以得到如下代码:(图二)For i = 1 To 4 For j = 1 To ii( 行号) j (字符数)1 1 2 2 3 3 4 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
19、 - 名师精心整理 - - - - - - - 第 13 页,共 18 页 - - - - - - - - - Print “*”;Next j Print Next i 师:教师在 vb 环境里执行此代码,执行结果正如如图一。(2)(图二)图形的打印(每行字符数不同,每行起始*位置不同)师:看(图二),也是一个三角形, 不同的是每行第一个字符的起始位置不一样,是一个变量,这样的图形应该怎么打印呢?师:这里要用到一个函数tab(),此函数用来控制输出字符的位置。请大家体验下面一段代码的作用。生:上机输入如下代码,体会tab 函数的作用。Print 1234567890 Print Tab(2)
20、; Print * Print Tab(4); Print * 师:大家通过实践,可以发现Tab()函数的自变量就表示输出的具体位置。师:显然图二中,每行的字符数是变的,每行第一个字符的起始位置也是变的,跟刚才的分析方法一样,要建立关系式。i 起始*位置(n) j 1 4 1 2 3 2 3 2 3 4 1 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 18 页 - - - - - - - - - 分析此表,我们可以用数学中一次函数的思想(i 为自变量, j 为函
21、数值, n 为函数值)来建立 j 和 i 的关系表达式, n 和 i 的关系表达式。从而得到:j=i ,n=5-i ,所以可以得到如下代码:For i = 1 To 4 Print Tab(5 i ); For j = 1 To i Print “*”;(图三)Next j Print Next i 师:教师在 vb 环境里执行此代码,执行结果正如如图二。四、学生自主探究师:教师布置任务打印如图三所示图形For i = 1 To 4 Print Tab(9 2*i); For j = 1 To 2 * i - 1 Print *; Next j Print Next i 生:名师资料总结 -
22、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 18 页 - - - - - - - - - i 起始*位置(n) j 1 7 1 2 5 3 3 3 5 4 1 7 可以归纳出: n=9-2*I j=2*i-1学生操作,教师巡视。教师利用大屏幕转播某个学生屏幕,请他展示代码及执行结果。然后教师点评。(图四)五、师生共同探究师:教师布置任务打印如图四所示图形生:采取“分而治之”的方法进行处理,即将图形分为上三角和下三角分别进行打印,然后进行合并形成图四所示的形状。参考代码略师: 大部分同
23、学采用分块处理的方法来实现打印,这样做易于理解但代码较繁琐,能不能简化一下呢?能否通过一个二重循环语句就能实现呢?这个图形一共7名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 18 页 - - - - - - - - - 行,如果 i 的范围取 1 到 7 难以归纳 n 和 j 的表达式, 但稍微观察一下, 可以发现此图是一个对称图形, 所以行 i 的范围可以取 -3 到 3,行作为定量可以表示成abs(i) ,再依此建立关系就方便了。For i = -3 To 3 P
24、rint Tab(2* Abs(i)+4); For j = 1 To 7 2*Abs(i) Print *; Next j Print Next i 分析与参考代码如下:Abs(i) 起始*位置(n) j 3 7 1 2 5 3 1 3 5 0 1 7 可以归纳出: n=2*abs(i)+4 ,J=7-2*abs(i) 师:教师在 vb 环境里执行此代码,执行结果正如如图四。六、教师总结这节课我们通过二重循环打印了几种图形,通过学习可以发现打印的关键就是对图形中行和列及打印位置的控制。实际上这些图形还可以变化成很多种其他图形,但只要我们能总结行和列、打印位置的规律,找出它们的内在关系,写出相
25、应的关系式,那么要实现种种图形的打印是不难的。六、教学反思这节课的引入本来是直接给学生展示一个用二重循环语句打印的完整图形,但发现学生不能一下子接受,所以采用了先打印一个*,再打印一行 *,到若干行 *的层层递进的方法,这样学生就很容易接受。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 18 页 - - - - - - - - - 本节课是用二重循环实现图形打印,我们选用的图形都是大家比较熟悉的图形,如矩形、三角形、菱形等,这样学生有亲切感,也容易激发学生的学习兴趣。本教学设计在讲图形打印技巧方面,注重跟数学学科的紧密结合, 利用学生熟悉的函数知识来分析问题,解决问题,加强了学科之间的交流。在具体教学过程中,通过一系列“*”型图形打印,让学生在这些趣味性的题目中思考、分析、编写代码并上机实践。这里的*型图案,是从简单到复杂慢慢变化的,这样学生易于接受和理解。老师教起来好教,学生学起来带劲,真正做到了课堂的有效教学。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 18 页 - - - - - - - - -
限制150内