C语言编程实现可移动的“字母金字塔”程序教学探讨
2018-11-08江军
江 军
(电子科技大学成都学院 四川 成都 611731)
1 引言
程序的效果是要在屏幕上产生一个如图1所示的“字母金字塔”在屏幕上完成从左至右的移动的动态过程。
图1
这个问题的解决,我们按照下面几个步骤来完成:
2 首先按照先易后难的原则,编程完成一个静态的“字母金字塔”
可以用循环及循环的嵌套来实现。
(1)首先这个金字塔是由26行组成,可设一个循环变量i来控制行的变化,i依次由1循环变到26,这是一个外层循环,i增加1,就输出打印出一行的全部内容。
(2)当行i确定后,每一行里又是由若干个空格和若干个字符组成,这可用二个内层循环来实现。假设用j来控制每一行里的空格数,用k来控制每一行里的字符数,下面我们列表来分析一下,当行i确定以后,每一行里最大空格数、最大字符数、字符对应的ASCII码的变化规律C。
行数i 空格数j 字符数k 字符的ASCII码1 25 1 65 2 24 3 66 3 23 5 67…………26 0 51 90
显然当外层循环i值确定后,内层空格j循环的终值为26-i,内层字符数k循环的终值为2*i-1,对应同行上的字符的ascii码值为:65+i-1即64+i。这样我们就可以方便地写出实现这个静态的“字母金字塔”的C程序的源代码如下:
3 完成可在屏幕上向右移动的“字母金字塔”
可以这样来考虑,每执行一次上面的循环可完成一个“字母金字塔”。我们可再设计一个更外层的循环,每循环一次将“字母金字塔”整体向右移动一个空格,也就是每一行的空格数增加一个,然后将前面一个“金字塔”清屏删除掉,为产生下一个向右整体移动一格的“字母金字塔”做准备。
因此我们在上面的源程序i循环变量的外面再设计一个循环变量kk来控制“字母金字塔”向右移动的空格数,例如移动100个空格,这样我们可以让kk从1变到100,终值为100,kk每循环一次,上面的循环执行一次。完成一次kk循环后,就会生成一个完整的“字母金字塔”,然后我们要清屏删除掉(可用Dos的清屏命令来实现:system(“cls”);),以便供下一个整体向右移动一格的“字母金字塔”生成。最后整个“字母金字塔”在屏幕上就完成了向右移动的过程。
实现这个功能的源程序代码如下:
4 结语
通过这个程序的实现,可以让学生体会C语言的循环及循环的嵌套功能非常强大,它能实现很多意想不到的功能,“只有你想不到的,没有它做不到的”,从而提高学生学习C语言的积极性,为今后编程打下坚实的基础。