摘要:循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)之一,在程序設(shè)計(jì)中占有重要地位。但是,對(duì)于初學(xué)者來(lái)說(shuō),循環(huán)結(jié)構(gòu)的學(xué)習(xí)難度也是三大結(jié)構(gòu)之最,較難掌握。該文從初學(xué)者的角度,闡述了C語(yǔ)言中循環(huán)結(jié)構(gòu)幾種典型應(yīng)用的實(shí)現(xiàn)方法,這些方法在日常授課中取得了較好的效果。
關(guān)鍵詞:C語(yǔ)言;結(jié)構(gòu)化程序設(shè)計(jì);循環(huán)結(jié)構(gòu);效率
中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)05-1146-02
On the C Language Cycle of the Structure Teaching Methods Research
PANG Yan-fang
(Jincheng Vocational and Technical College, Jincheng 048026,China)
Abstract: Cycle structure is a structured program design in one of three basic structures, in the program design occupies an important position. However, for beginners, the cycle structure of the three structures is the difficulty of studying the most difficult to master. This article from the beginner's point of view, expounded the C language in the cycle structure of several typical applications implementation methods that have made the medium of instruction in day-to-day good results.
Key words:C language; Structured Programming; Cycle structure; Efficiency
1 引言
順序、分支、循環(huán)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),所以在高級(jí)語(yǔ)言程序設(shè)計(jì)課程中,掌握這三種結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的基礎(chǔ)。而循環(huán)結(jié)構(gòu)是這三者中最復(fù)雜的一種結(jié)構(gòu),幾乎所有的程序都離不開循環(huán)結(jié)構(gòu)。正因?yàn)檫@種原因,循環(huán)結(jié)構(gòu)已經(jīng)成為學(xué)習(xí)語(yǔ)言課的較大障礙。如何將循環(huán)結(jié)構(gòu)學(xué)會(huì)掌握牢?已成為廣大語(yǔ)言學(xué)習(xí)者所面臨的共同問(wèn)題。針對(duì)這個(gè)問(wèn)題,該文從初學(xué)者的角度,闡述了C語(yǔ)言中循環(huán)結(jié)構(gòu)幾種典型應(yīng)用的實(shí)現(xiàn)方法。
在C語(yǔ)言中,循環(huán)結(jié)構(gòu)主要是由for和while、do-while語(yǔ)句實(shí)現(xiàn)的,其中for語(yǔ)句的應(yīng)用更為普遍一些。for語(yǔ)句的用法對(duì)于有程序設(shè)計(jì)經(jīng)驗(yàn)的學(xué)生來(lái)說(shuō)輕而易舉,但是對(duì)于那些沒(méi)有經(jīng)驗(yàn)的初學(xué)者來(lái)說(shuō),難度卻不小。
2 用循環(huán)結(jié)構(gòu)輸出乘法“九九表”
輸出簡(jiǎn)單圖形是循環(huán)結(jié)構(gòu)的典型應(yīng)用之一。對(duì)于這一類型的題目,初學(xué)者往往直接采用一條或若干條輸出語(yǔ)句printf完成,這樣雖然可以完成題目要求,但是很顯然缺乏靈活性,不符合程序設(shè)計(jì)的思想。按照正常的程序設(shè)計(jì)思想,應(yīng)該先分析圖形的構(gòu)成,找出其中的規(guī)律:如圖1中的乘法“九九表”,每一行由若干個(gè)數(shù)字和一個(gè)回車換行符構(gòu)成,將行號(hào)和每行所對(duì)應(yīng)的數(shù)的個(gè)數(shù)分別設(shè)為i和j,則可以形成表1。
分析表1,可以得出行號(hào)i與每行對(duì)應(yīng)的數(shù)的個(gè)數(shù)j如下的數(shù)學(xué)關(guān)系:每行數(shù)的個(gè)數(shù)j就是所對(duì)應(yīng)的行數(shù)i
則乘法“九九表”的構(gòu)成規(guī)律可以描述為:第i行由i個(gè)數(shù),且數(shù)的規(guī)律是1*Ii 2*i 3*i 、、、i*i,行尾有一個(gè)一個(gè)回車符構(gòu)成。把行號(hào)i作為for語(yǔ)句的循環(huán)變量,輸出圖形程序段。
main( )
{ int i,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
printf(\"%4d\",i*j); }
printf(\"\\");
}
3 數(shù)組中循環(huán)結(jié)構(gòu)的應(yīng)用
3.1 一維數(shù)組中的應(yīng)用
在C語(yǔ)言中,for語(yǔ)句經(jīng)常與數(shù)組相結(jié)合,用于實(shí)現(xiàn)數(shù)組元素的賦值、輸入與輸出。對(duì)于初學(xué)者來(lái)說(shuō),更習(xí)慣于用順序結(jié)構(gòu)的語(yǔ)句來(lái)實(shí)現(xiàn)(如圖2左)。我們將圖2左的幾條語(yǔ)句作比較,可以看出在這5條語(yǔ)句中,不同的只有數(shù)組下標(biāo),那么就可以將這5條語(yǔ)句合并成一條for語(yǔ)句,將數(shù)組下標(biāo)換成for語(yǔ)句的循環(huán)變量i,而i的值從0增加到4。按照f(shuō)or語(yǔ)句的基本語(yǔ)法規(guī)則可以很容易的寫出圖2右的for語(yǔ)句。
3.2 二維數(shù)組中的應(yīng)用
對(duì)于輸出一個(gè)4*3列數(shù)組元素的值,也可以使用上述辦法實(shí)現(xiàn),不過(guò)轉(zhuǎn)換過(guò)程比上例要復(fù)雜一些:經(jīng)過(guò)對(duì)比圖3左側(cè)方框中順序結(jié)構(gòu)的12條語(yǔ)句,可以發(fā)現(xiàn)也是只有數(shù)組下標(biāo)在變化,但是由于是二維數(shù)組,行下標(biāo)和列下標(biāo)同時(shí)都在變化。我們可以把這12條語(yǔ)句細(xì)分一下,3條語(yǔ)句為一組,而在同一組中的語(yǔ)句只有列下標(biāo)在變化,這時(shí)可以采用上例中的方法,將列下標(biāo)都用循環(huán)變量j來(lái)代替,得到圖3右上的形式。再次對(duì)比圖3右上的4條for語(yǔ)句,不同的是行下標(biāo),同樣用新的循環(huán)變量i來(lái)代替,合并后得到圖3右下最終二重for循環(huán)的語(yǔ)句。
4 循環(huán)結(jié)構(gòu)中的效率問(wèn)題
在數(shù)學(xué)中素?cái)?shù)如下定義:素?cái)?shù)即指那些大于1,且除了1和它本身外,不能被其它任何數(shù)整除的數(shù)。根據(jù)這一定義,我們很容易的編寫出如下程序:
int isprime(int n)
{int i;
for(i=2;i if(n%i==0) return 0; return 1; } 當(dāng)對(duì)FOR循環(huán)的執(zhí)行次數(shù)進(jìn)行分析時(shí),我們發(fā)現(xiàn):當(dāng)n不是素?cái)?shù)時(shí),沒(méi)有任何問(wèn)題;而當(dāng)n是素?cái)?shù)時(shí),循環(huán)體就要執(zhí)行(n-2)次,而實(shí)際上是不需要這么多次的。根據(jù)數(shù)學(xué)的知識(shí),可以將次數(shù)降為n/2或n的算術(shù)平方根,這樣可以大大減少循環(huán)體的執(zhí)行次數(shù),提高程序的效率。 程序的執(zhí)行效率是編程中時(shí)刻需要考慮的問(wèn)題,在循環(huán)結(jié)構(gòu)中,具體表現(xiàn)為循環(huán)體的執(zhí)行次數(shù)。我們?cè)谥v授過(guò)程中要注意向?qū)W生灌輸這種思想,從學(xué)習(xí)之初就要打下良好的基礎(chǔ)。 5 結(jié)束語(yǔ) 學(xué)以致用,是我們學(xué)習(xí)知識(shí)的目的。C語(yǔ)言中循環(huán)結(jié)構(gòu)的運(yùn)用往往是很多初學(xué)者所困惑的,他們往往不知道在什么情況下要使用循環(huán)結(jié)構(gòu)和為什么要使用循環(huán)結(jié)構(gòu)。更加透徹地理解和掌握程序設(shè)計(jì)中的基本思想,領(lǐng)會(huì)程序設(shè)計(jì)的精髓,是我們?cè)谥v授高級(jí)語(yǔ)言程序設(shè)計(jì)這門課程中,應(yīng)該時(shí)刻注意的問(wèn)題。以上這些,都是本人在教學(xué)過(guò)程中的一些體會(huì),可能比較膚淺,但是從初學(xué)者的角度來(lái)看,卻是必要的。希望該文能在這方面起到一點(diǎn)作用,同時(shí)希望廣大同仁多多指教。 參考文獻(xiàn): [1] 譚浩強(qiáng). C 語(yǔ)言程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,1999. [2] 蘇運(yùn)霖,譯. 計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)第1卷:基本算法[M].北京:國(guó)防工業(yè)出版社,2002.