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