江 軍
(電子科技大學成都學院 四川 成都 611731)
程序的效果是要在屏幕上產(chǎn)生一個如圖1所示的“字母金字塔”在屏幕上完成從左至右的移動的動態(tài)過程。
圖1
這個問題的解決,我們按照下面幾個步驟來完成:
可以用循環(huán)及循環(huán)的嵌套來實現(xiàn)。
(1)首先這個金字塔是由26行組成,可設(shè)一個循環(huán)變量i來控制行的變化,i依次由1循環(huán)變到26,這是一個外層循環(huán),i增加1,就輸出打印出一行的全部內(nèi)容。
(2)當行i確定后,每一行里又是由若干個空格和若干個字符組成,這可用二個內(nèi)層循環(huán)來實現(xiàn)。假設(shè)用j來控制每一行里的空格數(shù),用k來控制每一行里的字符數(shù),下面我們列表來分析一下,當行i確定以后,每一行里最大空格數(shù)、最大字符數(shù)、字符對應(yīng)的ASCII碼的變化規(guī)律C。
行數(shù)i 空格數(shù)j 字符數(shù)k 字符的ASCII碼1 25 1 65 2 24 3 66 3 23 5 67…………26 0 51 90
顯然當外層循環(huán)i值確定后,內(nèi)層空格j循環(huán)的終值為26-i,內(nèi)層字符數(shù)k循環(huán)的終值為2*i-1,對應(yīng)同行上的字符的ascii碼值為:65+i-1即64+i。這樣我們就可以方便地寫出實現(xiàn)這個靜態(tài)的“字母金字塔”的C程序的源代碼如下:
可以這樣來考慮,每執(zhí)行一次上面的循環(huán)可完成一個“字母金字塔”。我們可再設(shè)計一個更外層的循環(huán),每循環(huán)一次將“字母金字塔”整體向右移動一個空格,也就是每一行的空格數(shù)增加一個,然后將前面一個“金字塔”清屏刪除掉,為產(chǎn)生下一個向右整體移動一格的“字母金字塔”做準備。
因此我們在上面的源程序i循環(huán)變量的外面再設(shè)計一個循環(huán)變量kk來控制“字母金字塔”向右移動的空格數(shù),例如移動100個空格,這樣我們可以讓kk從1變到100,終值為100,kk每循環(huán)一次,上面的循環(huán)執(zhí)行一次。完成一次kk循環(huán)后,就會生成一個完整的“字母金字塔”,然后我們要清屏刪除掉(可用Dos的清屏命令來實現(xiàn):system(“cls”);),以便供下一個整體向右移動一格的“字母金字塔”生成。最后整個“字母金字塔”在屏幕上就完成了向右移動的過程。
實現(xiàn)這個功能的源程序代碼如下:
通過這個程序的實現(xiàn),可以讓學生體會C語言的循環(huán)及循環(huán)的嵌套功能非常強大,它能實現(xiàn)很多意想不到的功能,“只有你想不到的,沒有它做不到的”,從而提高學生學習C語言的積極性,為今后編程打下堅實的基礎(chǔ)。