摘要:C語(yǔ)言循環(huán)結(jié)構(gòu)設(shè)計(jì)是程序設(shè)計(jì)的基礎(chǔ),其也是結(jié)構(gòu)化程序設(shè)計(jì)中三種基本結(jié)構(gòu)中最為基本的結(jié)構(gòu)之一。目的是為了能夠提高教師在C語(yǔ)言循環(huán)結(jié)構(gòu)的教學(xué)中能取得較好的教學(xué)效果,使學(xué)生更加容易理解和掌握。
關(guān)鍵詞:C語(yǔ)言;結(jié)構(gòu)化程序設(shè)計(jì);循環(huán)結(jié)構(gòu);效率
中圖分類號(hào):TP312.1-4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 17-0000-02
1 用循環(huán)結(jié)構(gòu)輸出幾何圖形
通過(guò)C語(yǔ)言輸出實(shí)心三角圖形如圖1所示:
以上圖形可以通過(guò)若干條printf輸出語(yǔ)句完成,但是這只是簡(jiǎn)單的輸出語(yǔ)句完成的圖形,這與教師教學(xué)的項(xiàng)目要求不同,此圖形的教學(xué)目的是通過(guò)圖形的輸出使學(xué)生靈活的掌握?qǐng)D形的構(gòu)成與規(guī)律,通過(guò)循環(huán)結(jié)構(gòu)的形式完成圖形的輸出。
例如圖1中的(a)圖形,其是以*號(hào)組成的實(shí)心三角形,在第一行的輸出中是由一個(gè)*號(hào)和若干個(gè)空格組成,經(jīng)過(guò)回車換行;第二行的輸出是由三個(gè)連續(xù)的*號(hào)和若干個(gè)空格組成,經(jīng)過(guò)回車換行后;第三行的輸出是由5個(gè)連續(xù)的*號(hào)和若干個(gè)空格組成,經(jīng)過(guò)回車換行后;第四行的輸出是由7個(gè)連續(xù)的*號(hào)和若干個(gè)空格組成,經(jīng)過(guò)回車換行后;第五行的輸出是由7個(gè)連續(xù)的*號(hào)和若干個(gè)空格組成。如果將號(hào)、空格數(shù)和*號(hào)數(shù)分別設(shè)為i、m和n,建立關(guān)系表如表1所示:
通過(guò)上表1,觀察行號(hào)i與空格數(shù)m、星號(hào)數(shù)n之間的數(shù)學(xué)關(guān)系為:
m=5-i,n=2×i-1
實(shí)心三角形的構(gòu)成規(guī)律通過(guò)語(yǔ)言可以描述為,在第i行是由(5-i)個(gè)空格、(2×i-1)個(gè)星號(hào)和一個(gè)回車符組合而成。如果將行號(hào)i作為for語(yǔ)句的循環(huán)變量,則輸出圖形程序段為:
for(i=1;i<=5;i++)
{
/*輸出(5-i)個(gè)空格;*/
for(m=1;m<=5-i;m++)
printf(“”);
/*輸出(2*i-1)個(gè)星號(hào);*/
for(n=1;n<=2*i-1;n++)
printf(“*”);
/*輸出回車符;*/
printf(“\n”);
}
采用上面的方法,可以使學(xué)生很容易編寫出類似的程序,其中的關(guān)鍵在于讓學(xué)生找出圖形中行號(hào)與每一行的空格數(shù)以及星號(hào)數(shù)的關(guān)系(對(duì)于圖1(b)、(c)需要把圖形分成幾個(gè)部分,從而能夠分析出他們之間構(gòu)成的規(guī)律)。
2 數(shù)組中循環(huán)結(jié)構(gòu)的應(yīng)用
在C語(yǔ)言中數(shù)組循環(huán)結(jié)構(gòu)常用for語(yǔ)句對(duì)數(shù)組元素進(jìn)行賦值、輸入、輸出,我們?cè)趯懗绦驎r(shí),首先想到的就是順序結(jié)構(gòu),如圖2中左邊所列舉的編寫形式,這種程序的編寫方法較為復(fù)雜,通過(guò)觀察可以看出左邊程序中只有數(shù)組的下標(biāo)不同,針對(duì)這一關(guān)系可以將左邊的語(yǔ)句通過(guò)for語(yǔ)句建立循環(huán)結(jié)構(gòu),如右邊程序,將數(shù)組的下標(biāo)換成for語(yǔ)句的循環(huán)變量i,對(duì)i進(jìn)行賦值,從0到4。根據(jù)C語(yǔ)言中for語(yǔ)句的語(yǔ)法規(guī)則,程序最終的輸出結(jié)果與左邊相同。
再舉例,輸出二維數(shù)組元素,其與輸出素?cái)?shù)方法相同,只是結(jié)構(gòu)相對(duì)復(fù)雜一些。如圖3所示,左邊是按照順序結(jié)構(gòu)的方法編寫程序,一共需要編寫12條語(yǔ)句,程序編寫方法比較復(fù)雜,通過(guò)觀察可以看出左邊程序中的數(shù)組下標(biāo)發(fā)生變化,但是二維數(shù)組的行與列的下標(biāo)同時(shí)都在變化,所以通過(guò)上例中的一條for語(yǔ)句無(wú)法完成循環(huán)結(jié)構(gòu),對(duì)左邊的順序結(jié)構(gòu)進(jìn)行分析發(fā)現(xiàn)每三條語(yǔ)句為一組進(jìn)行劃分,可以劃分出4組可以用for語(yǔ)句建立循環(huán)結(jié)構(gòu),那么我們將列的下標(biāo)通過(guò)循環(huán)變量j來(lái)替代建立for語(yǔ)句的循環(huán)結(jié)構(gòu),如圖右邊所示,可建立4條for語(yǔ)句,對(duì)不不同行的下標(biāo)通過(guò)循環(huán)變量i來(lái)代替,合并4條for語(yǔ)句,最終簡(jiǎn)化為二重for循環(huán)的語(yǔ)句,同樣可以輸出二維數(shù)組元素。
通過(guò)上例分析,通常情況下我們對(duì)輸出二維數(shù)組元素的編程思路都采用二重for循環(huán)與二維數(shù)組相結(jié)合的方式來(lái)實(shí)現(xiàn),但是在實(shí)際運(yùn)用中,我們也可以通過(guò)一重for循環(huán)來(lái)實(shí)現(xiàn)輸出二維數(shù)組元素。通過(guò)一重for循環(huán)來(lái)實(shí)現(xiàn)是無(wú)論數(shù)組下標(biāo)如何變化,我們都可以首先確定輸出語(yǔ)句printf一定會(huì)執(zhí)行12次,那么如果采用一重for循環(huán),那么循環(huán)變量i的值就需要從0遞增到11。接下來(lái)我們可以分析數(shù)組行下標(biāo)m和列下標(biāo)n與循環(huán)變量i之間的關(guān)系,通過(guò)觀察可以得出循環(huán)變量i=行下標(biāo)m*3+列下標(biāo)n,根據(jù)整數(shù)除法的思想,行下標(biāo)m是循環(huán)變量i整除3后的商,而列下標(biāo)n是循環(huán)變量i整除3后的余數(shù),即:
m=i/3,n=i%3
從而可以寫出下面的for語(yǔ)句:
for(i=0;i<12;i++)
printf(“%d”,a[i/3][i%3]);
3 結(jié)束語(yǔ)
通過(guò)上面簡(jiǎn)單的C語(yǔ)言循環(huán)結(jié)構(gòu)實(shí)例,能夠使學(xué)生在剛剛接觸C語(yǔ)言循環(huán)結(jié)構(gòu)課程時(shí),較為容易的理解和掌握,并能夠通過(guò)學(xué)習(xí)改變思維方式,理解程序設(shè)計(jì)中的精髓,通過(guò)C語(yǔ)言入門,往更深層的計(jì)算機(jī)語(yǔ)言學(xué)習(xí),為成為一名合格的程序員而努力。同時(shí)教師通過(guò)建立C語(yǔ)言循環(huán)結(jié)構(gòu)教學(xué)課件循序漸進(jìn)的引導(dǎo),幫助學(xué)生完成計(jì)算機(jī)語(yǔ)言課程內(nèi)容的學(xué)習(xí)。
參考文獻(xiàn):
[1]古力米熱·阿吾旦.C語(yǔ)言中for循環(huán)語(yǔ)句的應(yīng)用研究[M].現(xiàn)代商貿(mào)工業(yè),2010(13).
[2]寧雪靜等.高級(jí)語(yǔ)言程序設(shè)計(jì)課程整合研究[M].計(jì)算機(jī)教育,2009(2).
[3]田霓光.淺談C程序設(shè)計(jì)中循環(huán)結(jié)構(gòu)的教學(xué)[M].咸寧學(xué)院學(xué)報(bào),2009(6).
[4]李霞.淺談啟發(fā)式教學(xué)法在C語(yǔ)言循環(huán)結(jié)構(gòu)的應(yīng)用[M].科學(xué)大眾.科學(xué)教育研究,2009(10).
[5]胡緒英.C++語(yǔ)言中循環(huán)結(jié)構(gòu)的教學(xué)設(shè)計(jì)[M].軟件導(dǎo)刊,2010(11).