- 相關(guān)推薦
96C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
一、C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
《C語(yǔ)言》的內(nèi)容很豐富,有的部分涉及到的細(xì)節(jié)很多,如硬件知識(shí)和數(shù)據(jù)結(jié)構(gòu)知識(shí)等,自學(xué)時(shí)不可能面面俱到,否則必然會(huì)顧此失彼,反而抓不住主要矛盾。筆者認(rèn)為對(duì)初學(xué)C語(yǔ)言的考生,開(kāi)始不必在每一個(gè)細(xì)節(jié)上過(guò)于死摳,而應(yīng)當(dāng)把主要精力放在最基本、最常用的那些部份,待有一定的基礎(chǔ)后再深入到一些非主要的細(xì)節(jié),有一些細(xì)節(jié)需要通過(guò)較長(zhǎng)期的實(shí)踐才能熟練掌握。初學(xué)C語(yǔ)言時(shí),可能會(huì)遇到有些問(wèn)題理解不透,請(qǐng)不要?dú)怵H,鼓足勇氣向后面的內(nèi)容學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問(wèn)題也就迎刃而解了。學(xué)習(xí)C語(yǔ)言始終要記住―曙光在前頭‖和―千金難買(mǎi)回頭看‖,―千金難買(mǎi)回頭看‖是學(xué)習(xí)知識(shí)的重要方法,就是說(shuō),學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問(wèn)題和加深理解前面的知識(shí),這是學(xué)習(xí)的人最不易做到的,然而卻又是最重要的。比如:在C語(yǔ)言中最典型的是關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)思,不管是那種教材,一開(kāi)始就強(qiáng)調(diào)這種方法,這時(shí)也許你不能充分體會(huì),但是學(xué)到函數(shù)時(shí),再回頭來(lái)仔細(xì)體會(huì),溫故知新,理解它就沒(méi)有那么難了。學(xué)習(xí)C語(yǔ)言就是要經(jīng)過(guò)幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。
下面我們就圍繞《C語(yǔ)言》的特點(diǎn)、以98年全國(guó)等級(jí)考試
大綱為基礎(chǔ),把里面的重點(diǎn)和難點(diǎn),從宏觀和微觀兩個(gè)角度,就如何學(xué)好這門(mén)課程提供一些建議和方法,供大家學(xué)習(xí)時(shí)參考。
首先從宏觀上談一談自學(xué)C語(yǔ)言的方法。
我認(rèn)為要學(xué)好C語(yǔ)言首先必須了解等級(jí)考試C語(yǔ)言的大綱和內(nèi)容,以及各種輔助材料的用途,這是學(xué)好C的基礎(chǔ)。從以前的經(jīng)驗(yàn)以及考網(wǎng)上的一些信息可知,要自學(xué)C語(yǔ)言必須準(zhǔn)備以下資料:
1、 教材:大家現(xiàn)在都公認(rèn)是清華大學(xué)譚浩強(qiáng)主編的那本,當(dāng)然有其他的也可以,如高校出版社的。
2、 習(xí)題集:我認(rèn)為清華大學(xué)的《C語(yǔ)言樣題匯編》不錯(cuò)。書(shū)后面附有答案。
3、 上機(jī)練習(xí):我認(rèn)為南開(kāi)大學(xué)的那個(gè)可以,最好是在考前從頭到尾做一遍。答案可以去考網(wǎng)下載區(qū)下載。
4、 大綱:這個(gè)肯定要的,可以在考網(wǎng)二級(jí)版那里去下,然后打印出來(lái)。
5、 自學(xué)計(jì)劃:為了做到有計(jì)劃有目的地學(xué)習(xí)C語(yǔ)言,大家可以根據(jù)自己的學(xué)習(xí)(或工作)情況,制定一個(gè)自學(xué)計(jì)劃,循序漸進(jìn)地學(xué)習(xí)。
6、 模擬盤(pán):為了更好地熟悉考場(chǎng)環(huán)境,下一個(gè)模擬盤(pán)是必不可少的,注意,在下載時(shí)要把鎖匙盤(pán)一起下回來(lái),否則不能進(jìn)入考試環(huán)境。
7、 教學(xué)光盤(pán):如果能買(mǎi)到C語(yǔ)言的教學(xué)光盤(pán),那當(dāng)然更好,這樣可以更直觀地學(xué)習(xí)C語(yǔ)言了。
下面從微觀上針對(duì)C語(yǔ)言的幾個(gè)重點(diǎn)和難點(diǎn),逐個(gè)談?wù)劸唧w的自學(xué)方法。
二 如何學(xué)習(xí)C語(yǔ)言的運(yùn)算符和運(yùn)算順序
C語(yǔ)言的運(yùn)算功能十分豐富,運(yùn)算種類(lèi)遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。因此,當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。
初學(xué)者往往對(duì)此感到非常困難,覺(jué)得C語(yǔ)言學(xué)習(xí)太繁雜,其實(shí)只要我們對(duì)此合理進(jìn)行分類(lèi),找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來(lái)用起來(lái)得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。
下面是所有的運(yùn)算符按優(yōu)先級(jí)不同分類(lèi)列表:(對(duì)不起,因?yàn)楸砀耧@示不正常,已被我刪除大家可以看書(shū)上的)
表中列出15種優(yōu)先級(jí)的運(yùn)算符,從高到低,優(yōu)先級(jí)為1 ~ 15,最后邊一欄是結(jié)合規(guī)則,除第2、3級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序。
下面我們通過(guò)幾個(gè)例子來(lái)說(shuō)明:
。1) 3*20/4 這個(gè)表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級(jí)運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計(jì)算3 * 20=60,然后被4除,結(jié)果為15,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為15 = 5
。2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
例子中的―;‖是C語(yǔ)言的語(yǔ)句分隔符,執(zhí)行順序?yàn)閺淖蟮接,?條語(yǔ)句執(zhí)行后a的值為3,第2條語(yǔ)句執(zhí)行后b的值為5,第3條語(yǔ)句中有兩個(gè)運(yùn)算符前置+ +和*,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運(yùn)算,所以a的值4參與運(yùn)算,C的值為20,最后執(zhí)行第4條語(yǔ)句,由于a + +為后置運(yùn)算,所以a值為4參與運(yùn)算,使得d的值仍為20,而a參與運(yùn)算后其值加1,值為5。
這個(gè)例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20。
。3)a = 3,b = 5,b+ = a,c = b* 5
例子中的―,‖是逗號(hào)結(jié)合運(yùn)算,上式稱(chēng)為逗號(hào)表達(dá)式,自左向右結(jié)合,最后一個(gè)表達(dá)式的結(jié)果值就是逗號(hào)表達(dá)式的結(jié)果,所以上面的逗號(hào)表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。
三、如何學(xué)習(xí)C語(yǔ)言的四種程序結(jié)構(gòu)
。1)順序結(jié)構(gòu)
這種結(jié)構(gòu)的程序比較簡(jiǎn)單,就是按照語(yǔ)句的排列順序依次執(zhí)行的機(jī)制。順序結(jié)構(gòu)的執(zhí)行順序是自上而下,依次執(zhí)行,因此編寫(xiě)程序也必須遵守這一規(guī)定,否則你的程序執(zhí)行結(jié)果就不對(duì)。
例如;a = 3,b = 5,現(xiàn)交換a,b的值,正確的程序?yàn)椋?c = a; a = b; b = c;
執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫(xiě)成: a = b; c = a; b = c;
則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,這是初學(xué)者常犯的錯(cuò)誤。
順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見(jiàn)的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑R,計(jì)算S = 3.14159*R*R,輸出圓的面積S。而大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的塊體、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
C語(yǔ)言自學(xué)方法(2)
。2) 分支結(jié)構(gòu)
分支結(jié)構(gòu)與順序結(jié)構(gòu)不同,其執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ(yǔ)句。
分支結(jié)構(gòu)適合于帶有邏輯條件判斷的計(jì)算,設(shè)計(jì)這類(lèi)程序時(shí)
往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫(xiě)出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開(kāi),使得問(wèn)題簡(jiǎn)單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。
學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要弄清基本的分支結(jié)構(gòu),嵌套結(jié)構(gòu)也就不難了。嵌套只不過(guò)是分支塊體中又包括分支語(yǔ)句而已,不是新知識(shí),只要你基礎(chǔ)知識(shí)扎實(shí),分支嵌套也難不住你,下面我們重點(diǎn)討論幾種基本的分支結(jié)構(gòu)的學(xué)習(xí)方法。
、買(mǎi)f(條件) { 塊 }
這種分支結(jié)構(gòu)中的塊可以是一條語(yǔ)句,此時(shí)―{
}‖可以省略,也可以是多條語(yǔ)句。它有兩條分支路徑可選,
一條是條件為真,執(zhí)行塊,另一條是條件不滿足,跳過(guò)塊。
如,計(jì)算x的絕對(duì)值,根據(jù)絕對(duì)值定義,我們知道,當(dāng)x>=0時(shí),其絕對(duì)值不變,而x<0時(shí)其絕對(duì)值是為x的反號(hào),因此程序段為:if(x<0) x=-x;
②if(條件) {塊1} else {塊2}
這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行塊1,否則執(zhí)行塊2,塊1和塊2都有1條或若干條語(yǔ)句構(gòu)成。
如:求ax^2+bx+c=0的根
分析:因?yàn)楫?dāng)b^2-4ac>=0時(shí),方程有兩個(gè)實(shí)根,否則
。╞^2-4ac<0)有兩個(gè)共軛復(fù)根。其程序段如下:
d=b*b-4*a*c; if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(―x1=%8.4f,x2=%8.4f\n‖,x1,x2); } else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(―x1=%8.4f+%8.4fi\n‖r, i);
printf(―x2=%8.4f-%8.4fi\n‖r,i) }
③多路分支:其語(yǔ)句格式為:
if(條件1) {塊1};
else if(條件2) {塊2}
else if(條件3) {塊3} ……
else if(條件n) {塊n}
else {塊n+1}
④switch語(yǔ)句: switch
語(yǔ)句也是多分支選擇語(yǔ)句,又稱(chēng)為多路開(kāi)關(guān)語(yǔ)句,到底執(zhí)行哪一塊,取決于開(kāi)關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if—else 語(yǔ)句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開(kāi)始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語(yǔ)句;如果不匹配,查找下一個(gè)分支是否匹配。
。3)循環(huán)結(jié)構(gòu):
循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書(shū)寫(xiě)的工作量,用來(lái)描述重復(fù)執(zhí)行某段算法的問(wèn)題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。
四種循環(huán)可以用來(lái)處理同一問(wèn)題,一般情況下它們可以互相代替換,但一般不提昌用goto循環(huán),所以下面我們重點(diǎn)講解另外的三種循環(huán)。
常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,大家好好看一下書(shū)中三種循環(huán)的格式和執(zhí)行順序,如何替換使用,如把while循環(huán)的例題,用for語(yǔ)句重新編寫(xiě)一個(gè)程序,這樣能更好地理解它們
的作用。
注意:在while和do—while循環(huán)體內(nèi)和for
循環(huán)中的第3語(yǔ)句中,應(yīng)包含趨于結(jié)束的語(yǔ)句(如I++,I--),否則就可能成了一個(gè)死循環(huán),這也是初學(xué)者的一個(gè)常見(jiàn)錯(cuò)誤。
下面我們來(lái)討論下這三種循環(huán)的異同之處:
用while和do—while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)是在語(yǔ)句1中進(jìn)行的;while
循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do—while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說(shuō)do—while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就不一定了。這三種循環(huán)都可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán),而goto語(yǔ)句與if構(gòu)成的循環(huán),不能用break和continue語(yǔ)句進(jìn)行控制。
這三種結(jié)構(gòu)并不是彼此孤立的,在循環(huán)中可能出現(xiàn)分支、順序結(jié)構(gòu),分支中也可能出現(xiàn)循環(huán)、順序結(jié)構(gòu)而把循環(huán)、分支看成一個(gè)語(yǔ)句,它又是構(gòu)成順序結(jié)構(gòu)的一個(gè)元素,因此這三種結(jié)構(gòu)相互結(jié)合,就能實(shí)現(xiàn)各種算法,設(shè)計(jì)出解題程序,但若是很大的題目,這樣編出的程序往往很長(zhǎng),重復(fù)結(jié)構(gòu)多,并且可閱讀性差,因此我們常將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。
(4)模塊化程序結(jié)構(gòu)
C語(yǔ)言的模塊化程序結(jié)構(gòu)用函數(shù)來(lái)實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫(xiě)成一個(gè)合法的C函數(shù),然后用主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)實(shí)現(xiàn)一大C程序:C程序=主函(main)+若干個(gè)函數(shù)。
在程序設(shè)計(jì)中,常將一些常用的功能模塊寫(xiě)成函數(shù),也可以將大程序段分割成若干函數(shù),前者目的在于減少重復(fù)編寫(xiě)程序段的工作量,后者目的在于縮短模塊長(zhǎng)度,以便程序閱讀方便。
一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成,它是一個(gè)編譯單位,而一個(gè)C程序由一個(gè)或多個(gè)源程序文件組成。對(duì)較大的程序,往往分成多個(gè)文件,這樣可以分別編寫(xiě)、分別編譯,提高高調(diào)試效率,一個(gè)源程序文件可以被多個(gè)C程序公用。
C程序的的執(zhí)行是從main()函數(shù)開(kāi)始,調(diào)用其它函數(shù)后流程回到main函數(shù),在main中結(jié)束整個(gè)函數(shù)運(yùn)行,main函數(shù)的稱(chēng)是系統(tǒng)規(guī)定的,用戶可以修改其內(nèi)容即函數(shù)體,但不能修改其名稱(chēng)和參數(shù),一個(gè)C程序必須有一個(gè)main函數(shù),也只能有一個(gè)main函數(shù)。
所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是互相獨(dú)立的一個(gè)函數(shù)度不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用,但不能調(diào)用main函數(shù)。
函數(shù)分成兩類(lèi),即標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù),標(biāo)準(zhǔn)函數(shù)又稱(chēng)庫(kù)函數(shù),由系統(tǒng)提供,用戶可直接調(diào)用,C語(yǔ)言提供了豐富的庫(kù)函數(shù),請(qǐng)考生在編寫(xiě)C程序時(shí)查閱教材后的函數(shù)說(shuō)明,這可節(jié)省你的編程工作量;用戶自定義函數(shù)由編程者自己編寫(xiě)。
【96C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法】相關(guān)文章:
瑜伽入門(mén)基本動(dòng)作10-05
英語(yǔ)入門(mén)學(xué)習(xí)方法10-08
英語(yǔ)入門(mén)的學(xué)習(xí)方法10-05
自學(xué)素描基本入門(mén)圖片10-05
瑜伽入門(mén)基本動(dòng)作名稱(chēng)10-05
吉他入門(mén)基礎(chǔ)學(xué)習(xí)方法10-06
自學(xué)素描基本入門(mén)教程10-05