课程名称 教材分析 重点 难点 方法 多重循环——文本作图问题 熟练掌握循环的嵌套,并能用双重循环结构编写有关文本作图的程序 对双重循环的外循环和内循环的理解与应用 知识目标:巩固循环的嵌套,掌握利用循环嵌套解决文本作图问题的程序设计教学目标 能力目标:培养学生分析问题、解决问题的能力,训练学生逻辑思维和判断能力 发展目标:教给学生灵活的思维方法,培养学生的学习兴趣和勇于探索、勇于创新的精神,提高综合素质 教法 教具 讲授、演示与学生自己编程并演示 多媒体(ppt) 一、复习多重循环 1、循环的嵌套 一个循环体内包含另一个完整的循环结构,称为循环的嵌套。 while语句、do-while语句和for语句都可以互相嵌套,甚至可以多层嵌套。例如: while( ) { for( ) { } } for( ) { for( ) { } } 2、 二重循环 假设外循共循环m次,内循环共循环n次,则: • 内外循环用到的循环变量名不能相同 • 外循环每循环1次,内循环需要完成整个n次循环 • 内循环的循环体共执行m×n次 教学过程 二、新课引入 给出各种图片,引发学生的兴趣。 * ** *** **** * ** *** **** * *** ***** ******* * *** ***** ******* ***** *** * 1 22 333 …… 999999999 1 121 12321 1234321 …… 123456787654321 三、新课内容 1、 现场编程 例1、 输出以下图形 * ** *** **** 分析 1、该问题用二重循环实现 2、外循环控制输出行数,for(i=1;i<=n;i++) 内循环实现输出列数,for(j=1;j<=m;j++) 3、该题行数i与列数j的关系是j<=i 代码 #include
main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=i;j++) printf(\"*\"); printf(\"\\n\"); } } 例2、 输出以下图形 * ** *** **** 分析 1、该问题用二重循环实现 2、外循环控制输出行数 内循环中第一部分用循环打印空格确定打印字符的初始位置,第二部分确定每行打印符号的个数 3、该题行数i与列数j的关系是j<=i 代码 #include main() { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(\" \"); for(j=1;j<=i;j++) printf(\"*\"); printf(\"\\n\"); } } 例3、 输出以下图形 * *** ***** ******* 分析 1、该问题用二重循环实现 2、外循环控制输出行数 内循环中第一部分用循环打印空格确定打印字符的初始位置,第二部分确定每行打印符号的个数 3、本题图形的规律:每行“*”的个数与行数i的关系是2*i-1 代码 #include main() { int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(\" \"); for(k=1;k<=2*i-1;k++) printf(\"*\"); printf(\"\\n\"); } } 2、 拓展练习 输出以下图形 1 121 12321 …… 123456787654321 行数(i) 1 2 3 4 5 6 空格数(9-i) 8 7 6 5 4 3 前半段数字(i) 1 2 3 4 5 6 后半段数字(i-1) 0 1 2 3 4 5 7 8 9 2 1 0 7 8 9 6 7 8 代码 #include void main() { int i,j; for(i=1;i<=9;i++) { for(j=1;j<=9-i;j++) printf(\" \"); for(j=1;j<=i;j++) printf(\"%d\ for(j=i-1;j>=1;j--) printf(\"%d\ printf(\"\\n\"); } } 例2、 输出以下图形 * *** ***** ******* ***** *** * 行数 (i) -3 -2 -1 0 1 2 3 代码 #include #include void main() 空格数 (abs(i)) 3 2 1 0 1 2 3 字符个数(2*(n-abs(i))-1 1 3 5 7 5 3 1 { int i,j; for(i=-3;i<=3;i++) { for(j=1;j<=abs(i);j++) printf(\" \"); for(j=1;j<=2*(4-abs(i))-1;j++) printf(\"*\"); printf(\"\\n\"); } } 四、课堂总结 1、外循环控制图形的行数 2、内循环的第一部分控制输出字符的首位置, 第二部分控制输出字符的个数 3、用printf(\"\\n\")语句换行 4、如果关于x轴或y轴对称,循环变量从 -(n-1)/2到(n-1)/2,n为行数或列数。 五、课后作业 利用双重循环结构打印所示图形 **** *** ** * 9 8 7 6 5 4 3 2 1 0