查看全部128種考試
1
2
3
4
5
6
7
8
9
10
admin  
【字體: C語(yǔ)言自學(xué)方法
C語(yǔ)言自學(xué)方法

其實(shí)學(xué)習(xí)c 有很多的方法,這里就找了一篇文章,讓大家讀讀,以饗讀者。海

C語(yǔ)言自學(xué)方法(1)

一、C語(yǔ)言入門的基本學(xué)習(xí)方法

《C語(yǔ)言》的內(nèi)容很豐富,有的部分涉及到的細(xì)節(jié)很多,如硬件知識(shí)和數(shù)據(jù)結(jié)構(gòu)知識(shí)等,自學(xué)時(shí)不可能面面俱到,否則必然會(huì)顧此失彼,反而抓不住主要矛盾。筆者認(rèn)為對(duì)初學(xué)C語(yǔ)言的考生,開始不必在每一個(gè)細(xì)節(jié)上過于死摳,而應(yīng)當(dāng)把主要精力放在最基本、最常用的那些部份,待有一定的基礎(chǔ)后再深入到一些非主要的細(xì)節(jié),有一些細(xì)節(jié)需要通過較長(zhǎng)期的實(shí)踐才能熟練掌握。初學(xué)C語(yǔ)言時(shí),可能會(huì)遇到有些問題理解不透,請(qǐng)不要?dú)怵H,鼓足勇氣向后面的內(nèi)容學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問題也就迎刃而解了。學(xué)習(xí)C語(yǔ)言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學(xué)習(xí)知識(shí)的重要方法,就是說,學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問題和加深理解前面的知識(shí),這是學(xué)習(xí)的人最不易做到的,然而卻又是最重要的。比如:在C語(yǔ)言中最典型的是關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)思,不管是那種教材,一開始就強(qiáng)調(diào)這種方法,這時(shí)也許你不能充分體會(huì),但是學(xué)到函數(shù)時(shí),再回頭來仔細(xì)體會(huì),溫故知新,理解它就沒有那么難了。學(xué)習(xí)C語(yǔ)言就是要經(jīng)過幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。

下面我們就圍繞《C語(yǔ)言》的特點(diǎn)、以98年全國(guó)等級(jí)考試大綱為基礎(chǔ),把里面的重點(diǎn)和難點(diǎn),從宏觀和微觀兩個(gè)角度,就如何學(xué)好這門課程提供一些建議和方法,供大家學(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ò)。書后面附有答案。

3、 上機(jī)練習(xí):我認(rèn)為南開大學(xué)的那個(gè)可以,最好是在考前從頭到尾做一遍。答案可以去考網(wǎng)下載區(qū)下載。

4、 大綱:這個(gè)肯定要的,可以在考網(wǎng)二級(jí)版那里去下,然后打印出來。

5、 自學(xué)計(jì)劃:為了做到有計(jì)劃有目的地學(xué)習(xí)C語(yǔ)言,大家可以根據(jù)自己的學(xué)習(xí)(或工作)情況,制定一個(gè)自學(xué)計(jì)劃,循序漸進(jìn)地學(xué)習(xí)。

6、 模擬盤:為了更好地熟悉考場(chǎng)環(huán)境,下一個(gè)模擬盤是必不可少的,可以在http://studywang.yeah.net/。下載,注意,在下載時(shí)要把鎖匙盤一起下回來,否則不能進(jìn)入考試環(huán)境。

7、 教學(xué)光盤:如果能買到C語(yǔ)言的教學(xué)光盤,那當(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)算種類遠(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ì)此感到非常困難,覺得C語(yǔ)言學(xué)習(xí)太繁雜,其實(shí)只要我們對(duì)此合理進(jìn)行分類,找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來用起來得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。

下面是所有的運(yùn)算符按優(yōu)先級(jí)不同分類列表:(對(duì)不起,因?yàn)楸砀耧@示不正常,已被我刪除大家可以看書上的)

表中列出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)算順序。

下面我們通過幾個(gè)例子來說明:

(1) 3*20/4%10 這個(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%10 = 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)算,上式稱為逗號(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í)行,因此編寫程序也必須遵守這一規(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如果改變其順序,寫成:

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)單的完整程序,常見的輸入、計(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ì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開,使得問題簡(jiǎn)單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。

學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要弄清基本的分支結(jié)構(gòu),嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支塊體中又包括分支語(yǔ)句而已,不是新知識(shí),只要你基礎(chǔ)知識(shí)扎實(shí),分支嵌套也難不住你,下面我們重點(diǎn)討論幾種基本的分支結(jié)構(gòu)的學(xué)習(xí)方法。

①If(條件)

{



}

這種分支結(jié)構(gòu)中的塊可以是一條語(yǔ)句,此時(shí)“{

}”可以省略,也可以是多條語(yǔ)句。它有兩條分支路徑可選,一條是條件為真,執(zhí)行塊,另一條是條件不滿足,跳過塊。

如,計(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í)根,否則(b^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ǔ)句,又稱為多路開關(guān)語(yǔ)句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if—else 語(yǔ)句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語(yǔ)句;如果不匹配,查找下一個(gè)分支是否匹配。

(3)循環(huán)結(jié)構(gòu):

循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(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)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環(huán),所以下面我們重點(diǎn)講解另外的三種循環(huán)。

常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,大家好好看一下書中三種循環(huán)的格式和執(zhí)行順序,如何替換使用,如把while循環(huán)的例題,用for語(yǔ)句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。

注意:在while和do—while循環(huán)體內(nèi)和for

循環(huán)中的第3語(yǔ)句中,應(yīng)包含趨于結(jié)束的語(yǔ)句(如I++,I--),否則就可能成了一個(gè)死循環(huán),這也是初學(xué)者的一個(gè)常見錯(cuò)誤。

下面我們來討論下這三種循環(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á)式,也就是說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ù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)合法的C函數(shù),然后用主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)實(shí)現(xiàn)一大C程序:C程序=主函(main)+若干個(gè)函數(shù)。

在程序設(shè)計(jì)中,常將一些常用的功能模塊寫成函數(shù),也可以將大程序段分割成若干函數(shù),前者目的在于減少重復(fù)編寫程序段的工作量,后者目的在于縮短模塊長(zhǎng)度,以便程序閱讀方便。

一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成,它是一個(gè)編譯單位,而一個(gè)C程序由一個(gè)或多個(gè)源程序文件組成。對(duì)較大的程序,往往分成多個(gè)文件,這樣可以分別編寫、分別編譯,提高高調(diào)試效率,一個(gè)源程序文件可以被多個(gè)C程序公用。

C程序的的執(zhí)行是從main()函數(shù)開始,調(diào)用其它函數(shù)后流程回到main函數(shù),在main中結(jié)束整個(gè)函數(shù)運(yùn)行,main函數(shù)的稱是系統(tǒng)規(guī)定的,用戶可以修改其內(nèi)容即函數(shù)體,但不能修改其名稱和參數(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ù)分成兩類,即標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù),標(biāo)準(zhǔn)函數(shù)又稱庫(kù)函數(shù),由系統(tǒng)提供,用戶可直接調(diào)用,C語(yǔ)言提供了豐富的庫(kù)函數(shù),請(qǐng)考生在編寫C程序時(shí)查閱教材后的函數(shù)說明,這可節(jié)省你的編程工作量;用戶自定義函數(shù)由編程者自己編寫.

轉(zhuǎn)帖于:計(jì)算機(jī)等級(jí)考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評(píng)論
昵 稱: *  評(píng) 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評(píng)論)查看全部評(píng)論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) All Rights Reserved    
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營(yíng)許可證號(hào):京ICP060677