- 相關(guān)推薦
C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)技巧
“C語(yǔ)言程序設(shè)計(jì)”是計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)的一門技術(shù)基礎(chǔ)課程,也是程序設(shè)計(jì)的啟蒙語(yǔ)言課程。下面是小編整理的C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)技巧,希望可以幫助大家!
【C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)技巧】
無(wú)論哪所大學(xué)的計(jì)算機(jī)專科和本科都需要學(xué)習(xí)C語(yǔ)言,《C語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)專業(yè)的一門必修課程,也是學(xué)習(xí)如何編程的入門課。初學(xué)C語(yǔ)言的人都會(huì)覺(jué)得C語(yǔ)言不好學(xué),感到無(wú)從下手。其實(shí),按照我們現(xiàn)在的教學(xué)大綱和教學(xué)要求,只要同學(xué)們掌握一些方法,多讀,多寫(xiě),克服心理上畏難情緒,C語(yǔ)言是完全可以學(xué)好的并且靈活應(yīng)用的。我總結(jié)了多年的《C語(yǔ)言程序設(shè)計(jì)》課程的教學(xué)經(jīng)驗(yàn)和學(xué)生在學(xué)習(xí)過(guò)程中常見(jiàn)的一些問(wèn)題,在些介紹一些C語(yǔ)言的學(xué)習(xí)和編程技巧,希望給初學(xué)C語(yǔ)言的同學(xué)有一定幫助。
C語(yǔ)言是一門應(yīng)用最廣泛的基礎(chǔ)高級(jí)編程語(yǔ)言,有很多語(yǔ)言都是由它發(fā)展而來(lái)的,所以學(xué)習(xí)好C語(yǔ)言之后再學(xué)習(xí)任何一種編程語(yǔ)言都會(huì)輕松上手。
1 熟記基本知識(shí)點(diǎn)
學(xué)習(xí)C語(yǔ)言和學(xué)習(xí)任何一種語(yǔ)言的方法基本一樣。我們嬰兒期間咿呀學(xué)語(yǔ)時(shí),從一個(gè)字開(kāi)始學(xué),然后兩個(gè),接著更多,最后我們能成句,成段,到出口成章。學(xué)習(xí)C語(yǔ)言的時(shí)候也一樣,有些最基本的內(nèi)容必須要記下來(lái)。
1.1 關(guān)鍵字
關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串。它們是寫(xiě)C語(yǔ)言的基礎(chǔ),如果關(guān)鍵字不記下來(lái),那編程是寸步難行。
1.2 運(yùn)算符
C語(yǔ)言中的運(yùn)算符和表達(dá)式與我們數(shù)學(xué)上的運(yùn)算符和表達(dá)式有相同的,也有不同的。我們?cè)趯W(xué)習(xí)的時(shí)候就注意記住并弄清楚那些不同的地方;镜恼Z(yǔ)法表達(dá)式及執(zhí)行過(guò)程。選擇結(jié)構(gòu)中的if語(yǔ)句和switch語(yǔ)句。循環(huán)語(yǔ)句中的for語(yǔ)句、while語(yǔ)句和do-while語(yǔ)句。這部分就好比是你會(huì)了許多詞,然后得把這些詞組成一些句子,語(yǔ)法的作用就是告訴你怎樣說(shuō)好一句話,表達(dá)清楚的意思。
1.3 常用庫(kù)函數(shù)
在這里最重要有兩個(gè)函數(shù):輸入函數(shù)scanf()和輸出函數(shù)printf()。一個(gè)程序如果沒(méi)有輸入,那無(wú)論運(yùn)行多少次結(jié)果都一樣,那也就失去了寫(xiě)程序的目的了。同樣一個(gè)程序如果沒(méi)有輸出,那運(yùn)行程序有什么意義呢?當(dāng)然輸出的形式比較多。在初學(xué)C語(yǔ)言的時(shí)候主要是從屏幕上輸出結(jié)果。所以這兩個(gè)函數(shù)的使用方法也必須要掌握。這兩個(gè)函數(shù)已經(jīng)定義在stdio.h這個(gè)頭文件中,不用我們自己寫(xiě),它們不是C語(yǔ)言中的語(yǔ)句,所以在使用這兩個(gè)函數(shù)時(shí)在源程序頂部一定要加上#include 。這是為了讓我們?cè)趫?zhí)行程序的時(shí)候,讓計(jì)算機(jī)知道scanf()和printf()這兩個(gè)函數(shù)怎么用。
掌握上面的必須要記下來(lái)的內(nèi)容,相當(dāng)于我們開(kāi)始學(xué)說(shuō)話時(shí)先聽(tīng)別人說(shuō),我們自己跟著學(xué)一些最基本的日常語(yǔ)言。這時(shí)我們就可以從一些簡(jiǎn)單的程序開(kāi)始讀,能把每一個(gè)程序的運(yùn)行結(jié)果能自己讀程序準(zhǔn)確地執(zhí)行出來(lái),那樣我們就可以開(kāi)始來(lái)編寫(xiě)程序了。
2 掌握程序的基本結(jié)構(gòu)
編寫(xiě)程序一定要注意程序的結(jié)構(gòu)性。學(xué)習(xí)寫(xiě)程序,不能開(kāi)始就寫(xiě)代碼。許多人在動(dòng)手寫(xiě)程序的時(shí)候感到無(wú)從下筆。原因主要是:看到一個(gè)題目不知道如何去分析,它怎么才能變成一個(gè)程序呢?這是初學(xué)者在編寫(xiě)程序的主要問(wèn)題。我在教學(xué)中采用了一種分步式的方法。
2.1 看到一個(gè)題目的時(shí)候先別想著編程序,用一個(gè)具體的實(shí)例想想不用程序你是如何解決這個(gè)問(wèn)題的
例如輸入三個(gè)數(shù),輸出最小值。我們用3,8,6三個(gè)數(shù)來(lái)考慮,我們一看就知道3是最小的。可是我們這一看中其實(shí)并不簡(jiǎn)單,其中有判斷。我們先看第一個(gè)數(shù)3,然后已經(jīng)記在我們頭腦中了,再看第二個(gè)數(shù)8,3比8小,那我們還是記住3,再比較第3個(gè)數(shù)6,最后確定3是最小的。我們現(xiàn)在就是要把我們頭腦中很快閃過(guò)的這些判斷過(guò)程想清楚。
第一行代碼表示把標(biāo)準(zhǔn)的輸入輸出頭文件包含在這個(gè)程序中。第二行代碼是C程序的主函數(shù),每個(gè)C程序中必須有且僅有一個(gè)main()函數(shù)。然后是函數(shù)的一對(duì)“{}”。
定義變量的意思好比買一塊地,有了這塊地就可以在上面蓋房、種莊稼之類的。但是為了便于統(tǒng)一管理,比如城市已經(jīng)規(guī)劃好了,你在郊區(qū)買的地就只能種莊稼,在市中心買的,就只能蓋房,這就是變量類型的含義了。用上面求最小值的例子。我們?cè)谌齻(gè)數(shù)中求最小值。這三個(gè)是什么數(shù),是整數(shù)還是小數(shù)?這就必須用變量類型來(lái)說(shuō)明。對(duì)于上例應(yīng)該定義三個(gè)整型變量用來(lái)存放三個(gè)整數(shù),還要定義一個(gè)整型變量用來(lái)存放最小值。如:int a,b,c,min;這行代碼的作用其實(shí)是要了一塊內(nèi)存,然后在這塊內(nèi)存里存東西。因?yàn)槲倚枰粋(gè)整數(shù),所以就用int這個(gè)關(guān)鍵字來(lái)聲明(相當(dāng)于用這塊地干什么)。那么變量a,b,c是什么呢?你買了一塊地,總要知道這塊地在哪是吧?不然就白買了,變量就是這樣一個(gè)作用。我們需要把數(shù)據(jù)存在計(jì)算機(jī)中,什么樣的數(shù)就定義什么樣的類型,需要存幾個(gè)數(shù)就定義幾個(gè)變量。
輸入數(shù)據(jù)有兩種方法。第一種從鍵盤(pán)輸入,就需要用到scanf()這個(gè)函數(shù);第二種是直接賦值。
處理數(shù)據(jù)是對(duì)于初學(xué)者來(lái)說(shuō)最難的一部分,也就是把我們剛才分析過(guò)程轉(zhuǎn)換成語(yǔ)句。這需要學(xué)好C語(yǔ)言的三種程序結(jié)構(gòu)。
(1)順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問(wèn)題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,不過(guò)大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。
(2)選擇結(jié)構(gòu)
對(duì)于要先做判斷再選擇的問(wèn)題就要使用分支結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)條件的結(jié)果選擇對(duì)應(yīng)的分支語(yǔ)句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫(xiě)出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開(kāi),使得問(wèn)題簡(jiǎn)單化,易于理解。
【C語(yǔ)言程序設(shè)計(jì)上機(jī)練習(xí)技巧】
1.學(xué)習(xí)編程的秘訣是:編程,編程,再編程!
要多上機(jī)、進(jìn)系統(tǒng)練習(xí),不能停留在所謂的復(fù)印答案上。不看書(shū)是絕對(duì)不行的,但光看不練也不行,練習(xí)能加深對(duì)理論知識(shí)的理解。多編幾次程序、多幾次上機(jī)調(diào)試,很東西自然而然就懂了、自然而然就記住了。C語(yǔ)言之所以掛科率高,主要的原因還是“平時(shí)不學(xué)、沒(méi)有理解和掌握、僅考前1~2周突擊死記硬背”——現(xiàn)在考察的是能力,能力的形成需要較長(zhǎng)時(shí)間的實(shí)踐磨練,而不是短期的死記硬背或突擊。
考前的復(fù)習(xí)準(zhǔn)備肯定有幫助,但基礎(chǔ)還在平時(shí),某些同學(xué)考試及格了,不能只看到其考前的復(fù)習(xí)準(zhǔn)備而忽略其平時(shí)的努力。請(qǐng)平時(shí)一定要加強(qiáng)練習(xí),循序漸進(jìn),由易到難,不要等到臨考前去背所謂的答案——已有的事實(shí)和往屆學(xué)長(zhǎng)慘痛的教訓(xùn)一次次證明:死記硬背答案花的時(shí)間更多、很痛苦、極難幸運(yùn)地及格,除了后悔、給后來(lái)者提供教訓(xùn)外,對(duì)自己的人生沒(méi)有任何意義。為什么平時(shí)不花點(diǎn)時(shí)間去掌握知識(shí)并收獲、體驗(yàn)成功的喜悅、讓青春更有價(jià)值、讓未來(lái)充滿機(jī)遇和希望呢?
即使需要背(理解記憶),也應(yīng)是程序的主要步驟、主要算法。
2.編程時(shí),建議先用偽代碼(注釋語(yǔ)句)寫(xiě)出主要步驟(算法),然后再寫(xiě)程序。
先不要考慮用C語(yǔ)言怎么實(shí)現(xiàn),應(yīng)先考慮人工完成應(yīng)怎么做、想清楚人工完成的每一個(gè)細(xì)節(jié),然后結(jié)合計(jì)算機(jī)能按你規(guī)定步驟自動(dòng)執(zhí)行、高速、高精度的特點(diǎn),設(shè)計(jì)出相應(yīng)的算法(主要步驟)。算法可以用流程圖表示,也可以用偽代碼(注釋語(yǔ)句)表示,應(yīng)寫(xiě)(畫(huà))出每一步驟要完成的工作。設(shè)計(jì)算法時(shí)應(yīng)自頂向下、逐步求精,先整體再局部,先宏觀再細(xì)節(jié),這樣才思路清析。
C語(yǔ)言難學(xué)只是一個(gè)表面現(xiàn)象,難不在C語(yǔ)言本身,若是同樣的編程要求,換做VB、Fortran、Java也一樣的難。在軟件設(shè)計(jì)中,先要做總體設(shè)計(jì),再是詳細(xì)設(shè)計(jì)(設(shè)計(jì)算法,與具體語(yǔ)言基本無(wú)關(guān)),然后才是使用一種語(yǔ)言來(lái)編碼,真正難的是總體設(shè)計(jì)和基本與語(yǔ)言種類無(wú)關(guān)的詳細(xì)算法;算法做好后,并非一定要使用C語(yǔ)言實(shí)現(xiàn),在社會(huì)分工中,編碼(可以用C語(yǔ)言)是技術(shù)含量、工資較低的活,通常由藍(lán)領(lǐng)工人完成。
如果主要步驟(算法)寫(xiě)不出來(lái),則程序的正確設(shè)計(jì)注定是不可能的——經(jīng)常出現(xiàn)的情況是寫(xiě)了一大段程序,但自己都不知道這些程序和變量的作用、是怎樣運(yùn)行的。
3.注意練習(xí)系統(tǒng)給出的提示(評(píng)分備注)。
評(píng)分備注主要分4類,說(shuō)明了評(píng)分的詳細(xì)情況,應(yīng)仔細(xì)閱讀并采取相應(yīng)的措施。
(1)報(bào)告編譯鏈接錯(cuò)誤,如下的備注信息指明了程序第27行存在的問(wèn)題:
.c(27) : error C2220: warning treated as error - no object file generated
.c(27) : warning C4101: 'k' : unreferenced local variable
(2)失分情況,在哪些方面失分:
失分[10],未實(shí)現(xiàn):輸出了x的值,格式符合要求,與示例一致
失分[20],未實(shí)現(xiàn):x>0時(shí)計(jì)算正確
失分[20],未實(shí)現(xiàn):x=0時(shí)計(jì)算正確
失分[20],未實(shí)現(xiàn):x<0時(shí)計(jì)算正確
失分[30],未實(shí)現(xiàn):當(dāng)函數(shù)值超過(guò)int型數(shù)據(jù)表示的范圍時(shí)計(jì)算正確
(3)違反編程規(guī)范的情況。編程規(guī)范與算法、設(shè)計(jì)是否正確無(wú)關(guān),按要求修正即可,其目的是讓考生養(yǎng)成相應(yīng)的習(xí)慣和意識(shí),最后上升為一種素質(zhì):
第27行: 應(yīng)當(dāng)使用Tab縮進(jìn),而不是使用空格
第27行: 'if'縮進(jìn)錯(cuò)誤
第27行: 在操作符'!='前后應(yīng)有空格
第7行: 變量(h)命名太簡(jiǎn)單
(4)程序修改了禁止修改的部分或不符合編程要求,例如:
本程序已有內(nèi)容禁止修改但卻被考生修改或考生添加代碼部分之行數(shù)、行長(zhǎng)超限,評(píng)分終止。建議使用系統(tǒng)提供的專用檢查程序(單擊此處下載)進(jìn)行檢查。
4.利用在線幫助,不需要、不該背(記憶)的東西堅(jiān)決不背!
當(dāng)你對(duì)某個(gè)關(guān)鍵字、函數(shù)的用法不清楚或不知其在哪一個(gè)頭文件中定義時(shí),可以將光標(biāo)移至該關(guān)鍵字、函數(shù)上,按“F1”鍵(TC為Ctrl+F1),VC6即可顯示出相關(guān)的說(shuō)明(若相關(guān)的說(shuō)明項(xiàng)較多,則應(yīng)選擇與Visual C++ Programmer Guide——VC++程序員指南相關(guān)的,如圖1所示)。
由此:
(1)每個(gè)程序應(yīng)包含哪些頭文件,不需要背。編程時(shí)可先不寫(xiě)頭文件,則編譯時(shí)會(huì)報(bào)警告信息,例如說(shuō)某函數(shù)未定義等,則通過(guò)在線幫助查出其所在的頭文件再?gòu)?fù)制即可。
(2)系統(tǒng)庫(kù)函數(shù)的用法、參數(shù)的順序及意義不用背。例如fread和fscanf有多個(gè)參數(shù),fread的文件指針參數(shù)在最后而fscanf則在最前;再如scanf和printf中的格式控制、數(shù)據(jù)類型控制、轉(zhuǎn)義符等在在線幫助中均有。特別要說(shuō)明的是,在VC6的在線幫助中,絕大部分語(yǔ)句、函數(shù)都有例子,復(fù)制下來(lái)改一改就可能完成了新的任務(wù)。
(3)當(dāng)某個(gè)函數(shù)名或保留關(guān)鍵字記不清楚拼寫(xiě)時(shí),可使用自動(dòng)完成或在在線幫助中使用索引協(xié)助查找。
5.勤用復(fù)制、粘貼。
自行逐字輸入太慢且容易出錯(cuò),復(fù)制、粘貼又快、又準(zhǔn),何樂(lè)而不為呢?
(1)程序提供了編程素材的,一定要復(fù)制、粘貼。搞錯(cuò)了可能影響得分甚至得0分,盡管設(shè)計(jì)正確,但記住是計(jì)算機(jī)自動(dòng)閱卷,要按要求做。
(2)調(diào)試程序時(shí),若輸入數(shù)據(jù)較多,則應(yīng)復(fù)制、粘貼。注意,題目中給出的測(cè)試數(shù)據(jù)中可能隱藏有全角的空格或多余的空格,直接復(fù)制、粘貼可能會(huì)有問(wèn)題,建議此時(shí)應(yīng)先復(fù)制到記事本中,進(jìn)行編輯處理,然后再?gòu)?fù)制、粘貼。
(3)在線幫助中有例子或參考代碼,則應(yīng)復(fù)制、粘貼后再修改,既準(zhǔn)確,又能節(jié)約不少寶貴的時(shí)間。
(4)編寫(xiě)好一個(gè)程序后再編寫(xiě)另一程序時(shí),建議將編好程序的框架復(fù)制到新程序中再修改,可節(jié)約一些時(shí)間。
6.計(jì)算中心提供全天候的免費(fèi)開(kāi)放機(jī)房并有助教為您答疑解惑,服務(wù)不好可以投訴,詳情請(qǐng)單擊此處查看。
7.計(jì)算中心網(wǎng)站提供有C語(yǔ)言程序設(shè)計(jì)的教學(xué)錄像,請(qǐng)?jiān)诒揪W(wǎng)站中使用搜索功能查找。
【C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)技巧】相關(guān)文章:
學(xué)習(xí)二級(jí)c語(yǔ)言程序設(shè)計(jì)的方法08-30
2017年計(jì)算機(jī)c語(yǔ)言學(xué)習(xí)技巧08-28
全國(guó)計(jì)算機(jī)c語(yǔ)言程序設(shè)計(jì)題庫(kù)201708-28
2017年計(jì)算機(jī)等級(jí)c語(yǔ)言程序設(shè)計(jì)試題08-28
2017年全國(guó)計(jì)算機(jī)c語(yǔ)言程序設(shè)計(jì)考試試題及答案08-31
C++語(yǔ)言的基本符號(hào)10-11
2017年計(jì)算機(jī)二級(jí)C++語(yǔ)言程序設(shè)計(jì)考試內(nèi)容08-26
概述C++語(yǔ)言特點(diǎn)04-15