免費(fèi)注冊 登錄 搜索 暑假 幫助
課程搜索
當(dāng)前位置 >> 首頁 >> 新聞資訊 >> 熱點(diǎn)資訊 >> 考全國計算機(jī)等級考試三級如何學(xué)C語言

考全國計算機(jī)等級考試三級如何學(xué)C語言


http://m.624100.com ┊ 發(fā)布日期:2007-4-5 ┊ 編輯:班長

  很多沒接觸過C語言的朋友,考三級最感到就是怕C語言學(xué)不來.其實(shí),按照我們現(xiàn)在的三級C上機(jī)的考試要求,(只是一道編程題,還不是完整的編程,只要填上一段函數(shù)就行了),只要掌握一些C編程的基本知識,看好南開100題的各種題型的解法,加上多上機(jī)獨(dú)立練習(xí)就完全能夠過級的。眾所周知,近幾年的三級C上機(jī)的題庫就是南開100題,考試時是從中抽一道編程題,只是少數(shù)考題條件略改下,比如原題中是“從大到小”排序,考題也許改成“從小到大”排序,我想這對于理解了解題方法的人,應(yīng)該不存在問題的。

  言歸正傳,我們?nèi)绾尉腿壙荚噥韺W(xué)《C程序設(shè)計》呢?

  《C程序設(shè)計》的內(nèi)容很豐富,按照我們現(xiàn)在的考試要求,也就是南開100題解法中主要涉及到的是基礎(chǔ)知識、四種結(jié)構(gòu)的的程序設(shè)計、函數(shù)與數(shù)組的應(yīng)用和算法,在學(xué)習(xí)時,應(yīng)該把主要精力放在這些部分,當(dāng)然其它的知識,如輸入輸出的語句、文件的讀寫、指針的定義等,盡管原程序都給了你,但最起碼也要能看懂,所以還是不能放棄學(xué)的,了解為好。當(dāng)然,在初學(xué)C語言時,可能會遇到有些問題理解不透,或者表達(dá)方式與以往數(shù)學(xué)學(xué)習(xí)中不同(如運(yùn)算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進(jìn)行學(xué)習(xí),待學(xué)完后面的章節(jié)知識,前面的問題也就迎刃而解了.

  一、學(xué)好C語言的語法

  無它,看書并記憶,加上機(jī)練習(xí)。有很多考三級的朋友都學(xué)過其它程序語言,如VB,很容易受它們習(xí)慣的影響,在寫程序上經(jīng)常忘記C語言中的分號、小括號、大括號的運(yùn)用,導(dǎo)致很多人看著答案編程老是出錯,檢查半天不知哪里錯了,大呼小叫“我按照答案輸進(jìn)去的,為什么提示錯誤,對了N遍,不知哪里錯了”,所以一開始就要養(yǎng)成良好的習(xí)慣和細(xì)心。特別注意的是為什么說上機(jī)練習(xí)很重要,原因就是在紙上寫的,語法錯了不知道,而上機(jī)錯了就顯示了。

  二、學(xué)好C語言的運(yùn)算符和運(yùn)算順序

  這是學(xué)好《C程序設(shè)計》的基礎(chǔ),C語言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計語言。在表達(dá)式方面較其它程序語言更為簡潔,如自加、自減、逗號運(yùn)算和三目運(yùn)算使表達(dá)式更為簡單,但初學(xué)者往往會覺的這種表達(dá)式難讀,關(guān)鍵原因就是對運(yùn)算符和運(yùn)算順序理解不透不全。當(dāng)多種不同運(yùn)算組成一個運(yùn)算表達(dá)式,即一個運(yùn)算式中出現(xiàn)多種運(yùn)算符時,運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。在學(xué)習(xí)中,只要我們對此合理進(jìn)行分類,找出它們與我們在數(shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會牢記心中,將來用起來得心應(yīng)手,而有些可暫時放棄不記,等用到時再記不遲。

  先要明確運(yùn)算符按優(yōu)先級不同分類,《C程序設(shè)計》運(yùn)算符可分為15種優(yōu)先級,從高到低,優(yōu)先級為1 ~ 15,除第2、3級和第14級為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級運(yùn)算符的運(yùn)算順序。下面我們通過幾個例子來說明:

  (1) 5*8/4%10 這個表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計算5 *8=40,然后被4除,結(jié)果為10,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為10%10 = 0;

  (2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

  對于c=++a*b來說,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運(yùn)算,所以a的值4參與運(yùn)算,C的值計算式為4*5=20而不是3*5=15了;而對于d=a++*b來說,由于a + +為后置運(yùn)算,所以a值為4參與運(yùn)算,使得d的值仍為20,而a參與運(yùn)算后其值加1,值為5。 這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20;

  (3)(a = 3,b = 5,b+ = a,c = b* 5)

  例子中的“,”是逗號結(jié)合運(yùn)算,上式稱為逗號表達(dá)式,自左向右結(jié)合,最后一個表達(dá)式的結(jié)果值就是逗號表達(dá)式的結(jié)果,所以上面的逗號表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。

  三、學(xué)好數(shù)據(jù)類型定義

  類型定義在所有編程中基本都要用到,用些題類型定義錯了,解題結(jié)果就錯了,大家一定要看好書上關(guān)于整型、長整型、字符型、無符號型、實(shí)數(shù)型的定義的區(qū)別和運(yùn)用以及它們的范圍,這些在南開100題中都是考點(diǎn),考試時很多考生就是因?yàn)轭愋投x錯了,而沒通過。

  如:南開第8題:要求對一篇文章的每個字符按替代關(guān)系:f(p)=p*11 mod 256(p是數(shù)組中某一個字符的ASCII值,f(p)是計算后新字符的ASCII值),如果計算后f(p)值小于等于32或大于130,則該字符不變,否則將f(p)所對應(yīng)的字符進(jìn)行替代。部分源程序存在文件prog1.c中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符。

  請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。

  以下是引用片段:

  #include

  #include

  #include

  #include

  unsigned char xx[50][80];

  int maxline=0;/*文章的總行數(shù)*/

  int ReadDat(void);

  void WriteDat(void);

  (上面是原程序中給的)要求我們編出void encryptChar()的函數(shù)部分,在解題的時候我們就要定義個中

  間變量,從原程序中可以看出是無符號型字符unsigned char,所以我們在定義中間變量時一定要保持一致,如果定義了char型就錯了,當(dāng)然象此類簡單的換算題,可以不用中間變量的,直接進(jìn)行運(yùn)算就可以的,本人發(fā)在資料下載區(qū)的南開100中的解法就沒有用中間變量,確保初學(xué)者不會出錯。關(guān)于這些,大家可以結(jié)合書上的知識,對照南開題就能弄明白的。

  四、學(xué)好C語言的四種程序結(jié)構(gòu)

  (1)順序結(jié)構(gòu)

  順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。

  例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好象交換兩個杯子水,這當(dāng)然要用到第三個杯子,假如第三個杯子是c,那么正確的程序?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é)者最容易犯這種錯誤。 順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

  (2) 分支結(jié)構(gòu)

  順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,下面我介紹幾種基本的分支結(jié)構(gòu)。

  ①if(條件)

  {

  分支體

  }

  這種分支結(jié)構(gòu)中的分支體可以是一條語句,此時“{ }”可以省略,也可以是多條語句即復(fù)合語句。它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時分支體就不會執(zhí)行。如:要計算x的絕對值,根據(jù)絕對值定義,我們知道,當(dāng)x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;

  ②if(條件)

  {分支1}

  else

  {分支2}

  這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。

  文章閱讀排行周排行月排行考全國計算機(jī)等級考試三級如何學(xué)C語言我的軟考經(jīng)驗(yàn)助你一定能成功JAVA考試認(rèn)證:SCJP310-035考試心得 07年計算機(jī)等級考試一級上機(jī)Word題三07年計算機(jī)等級考試一級上機(jī)Word題二07年計算機(jī)等級考試一級上機(jī)Word題一計算機(jī)等級三級網(wǎng)絡(luò)技術(shù)考試分析IT職場:我拒絕了一個應(yīng)聘的女程序員IT職場:要求加薪有秘訣 你會幾招?IT職場:外企面試官最愛提的問題TOP10計算機(jī)等級考試三級偏軟類上機(jī)備考攻略計算機(jī)等級二級C語言上機(jī)試題17-24套IT職場:好的求職簡歷是這樣寫出來的 全國計算機(jī)等級考試一級B模擬試題一三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試一全國計算機(jī)等級考試二級VB最新模擬試題07年4月計算機(jī)等考三級網(wǎng)絡(luò)上機(jī)應(yīng)試指導(dǎo)開啟IT行業(yè)大門 IT教育頻道重裝上線全國計算機(jī)等級考試一級B模擬試題六三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試八三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試二07年計算機(jī)等級考試三級網(wǎng)絡(luò)復(fù)習(xí)綱要計算機(jī)等級考試二級C語言上機(jī)試題1-8套

 、矍短追种дZ句:其語句格式為:

  if(條件1) {分支1};

  else if(條件2) {分支2}

  else if(條件3) {分支3}

  ……

  else if(條件n) {分支n}

  else {分支n+1}

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

  循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機(jī)特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會給程序的運(yùn)行帶來不可預(yù)料的錯誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學(xué)者的一個常見錯誤。

  在學(xué)完這三個循環(huán)后,應(yīng)明確它們的異同點(diǎn):用while和do…while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句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就可能一次都不執(zhí)行。另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進(jìn)行控制的。

  順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實(shí)不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個語句。在實(shí)際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)。

  (4)模塊化程序結(jié)構(gòu)

  C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個模塊都編寫成一個C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實(shí)現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。 因些,對函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機(jī)調(diào)試加以鞏固。

  五、掌握一些簡單的算法

  編程其實(shí)一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就要求掌握算法,根據(jù)我們的《C程序設(shè)計》教學(xué)大綱中,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。如兩個數(shù)的交換、三個數(shù)的比較、冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。

  (1)數(shù)字拆分

  此類題在南開100中占的比重很大,共占了16道題,主要是對四位數(shù)分解成千位數(shù),百位數(shù),十位數(shù),個位數(shù),這些就要用到運(yùn)算中的整除(“/”)和求余(“%”)運(yùn)算,一定要理解這兩個運(yùn)算的結(jié)果。

  如南開15題:已知數(shù)據(jù)文件IN.DAT中存有200個四位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請考生編制一函數(shù)jsVal(),其功能是:若一個四位數(shù)的千位數(shù)字上的值小于等于百位數(shù)字上的值,百位數(shù)字上的值小于等于十位數(shù)字上的值,以及十位數(shù)字上的值小于等于個位數(shù)字上的值,并且原四位數(shù)是偶數(shù),則統(tǒng)計出滿足此條件的個數(shù)cnt并把這些四位數(shù)按從小到大的順序存入數(shù)組b中,最后調(diào)用寫函數(shù)writeDat()把結(jié)果cnt以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文件中。

  從解法中可以看出,分別求出這個四個位數(shù),假如原四位數(shù)是a

  千位數(shù):a/1000;

  百位數(shù):a%1000/100;

  十位數(shù):a%100/10;

  個位數(shù):a%10;

  當(dāng)然方法很多,只要我們正確掌握了這兩種運(yùn)算,問題就迎刃而解。

  (2)排序法

  排序方法很多,只要掌握一種方法,就可以應(yīng)對南開題中關(guān)于排序題的解法,建議用冒泡排序法。

  如用冒泡排序法對10個不同整數(shù)排序(從小到大),選擇法排序思路:設(shè)有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進(jìn)行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設(shè)為a)與a[1]交換,此時a[1]中存放了10個中最小的數(shù)。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數(shù)中的最小者a與a[2]交換,此時a[2] 中存放的10個數(shù)中第2小的數(shù);依此類推,共進(jìn)行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數(shù)中的最小一個,代碼如下:

  以下是引用片段:

  for(i=1;i<=9;i++)

  for(j=i+1;j<=10;j++)

  if(a>a[j]

  {temp=a;

  a=a[j];

  a[j]=temp;

  }

  文章閱讀排行周排行月排行考全國計算機(jī)等級考試三級如何學(xué)C語言我的軟考經(jīng)驗(yàn)助你一定能成功JAVA考試認(rèn)證:SCJP310-035考試心得 07年計算機(jī)等級考試一級上機(jī)Word題三07年計算機(jī)等級考試一級上機(jī)Word題二07年計算機(jī)等級考試一級上機(jī)Word題一計算機(jī)等級三級網(wǎng)絡(luò)技術(shù)考試分析IT職場:我拒絕了一個應(yīng)聘的女程序員IT職場:要求加薪有秘訣 你會幾招?IT職場:外企面試官最愛提的問題TOP10計算機(jī)等級考試三級偏軟類上機(jī)備考攻略計算機(jī)等級二級C語言上機(jī)試題17-24套IT職場:好的求職簡歷是這樣寫出來的 全國計算機(jī)等級考試一級B模擬試題一三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試一全國計算機(jī)等級考試二級VB最新模擬試題07年4月計算機(jī)等考三級網(wǎng)絡(luò)上機(jī)應(yīng)試指導(dǎo)開啟IT行業(yè)大門 IT教育頻道重裝上線全國計算機(jī)等級考試一級B模擬試題六三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試八三級網(wǎng)絡(luò)技術(shù)考前密卷選擇題測試二07年計算機(jī)等級考試三級網(wǎng)絡(luò)復(fù)習(xí)綱要計算機(jī)等級考試二級C語言上機(jī)試題1-8套

  結(jié)束語:此文主要是結(jié)合三級C上機(jī)的特點(diǎn)所舉的一些例子分析下重點(diǎn),首先聲明不全,只是起拋磚引玉的作用,大家在學(xué)習(xí)C語言中,不能局限性于此,書一定要看完,不作考核的部分盡量能夠知道一點(diǎn),也不枉考試一場,各人考試的目的不同,自己把握就是。

熱門課程

關(guān)于我們 | 信息反饋 | 友情鏈接 | 聯(lián)系我們 | 蘇ICP備05033018號
Copyright 2005-2014, 版權(quán)所有 DaJiaoShi.COM