表1
2001年上 2001年下 2002年上 2002年下
C語言 14.5萬人 23.9萬人 27.0萬人 29.3萬人
筆試通過率 50.4% 49.1% 26.7% 38.0%
可以看出:與2001年相比,該考試2002年的考生筆試通過率出現(xiàn)了較大幅度的下降。認(rèn)真分析后發(fā)現(xiàn),產(chǎn)生這一問題的原因是多方面的,部分考生在復(fù)習(xí)過程中在掌握復(fù)習(xí)重點和復(fù)習(xí)方法上出現(xiàn)了一些問題。下面,結(jié)合2002年C語言程序設(shè)計的兩次考試,談?wù)勅绾螐?fù)習(xí)才能更有效地提高考試成績。
一、注重基礎(chǔ)知識學(xué)習(xí),進行全面系統(tǒng)的復(fù)習(xí)
C語言語法靈活,要求考生了解掌握的地方都可能成為考核點,C語言也最富變化,一個填空題可能有幾個甚至十幾個答案。但是,萬變不離其宗,這個"宗"就是"知識點"。《全國計算機等級考試考試大綱(2002年版)》中列出了12個部分的內(nèi)容,幾乎包括了教材中的所有章節(jié)?忌趶(fù)習(xí)備考時,切不可存僥幸心理,認(rèn)為有些知識有可能不考,或者上次剛剛考過,或者自己一時沒有理解,從而放棄復(fù)習(xí)。
下面是幾道考核基本概念的試題,直接考查最基本的"知識點",屬于偏容易的試題,但從考試情況看卻不很理想。
例1(2002年下選擇題第13題)以下選項中合法的用戶標(biāo)識符是
A)long B)_2Test C)3Dmax D)A.dat
這道題考核"用戶標(biāo)識符"的概念。合法的標(biāo)識符由字母、數(shù)字和下劃線組成,第一個字符必須為字母或下劃線,關(guān)鍵字不能作為用戶標(biāo)識符。由此便可排除A、C和D。該題難度值為0.72。選擇A的有13%的考生,原因是他們忽略了long是long int(長整型)的簡寫,是一個關(guān)鍵字。
直接考核基本概念的試題一般來說都比較簡單,若想取得整個試卷的高分,一定要力爭全部答對這部分試題。試題的覆蓋面較大,廣大考生務(wù)必要全面系統(tǒng)復(fù)習(xí),不應(yīng)有任何疏漏。
二、加強對知識的理解和運用,融會貫通
知識點總是分布在各個章節(jié)中,對知識的學(xué)習(xí)也是有時間先后的,但一張試卷打破了章節(jié)和學(xué)習(xí)時間的界限,我們不可能首先判斷考試內(nèi)容出自哪章哪節(jié),再尋找解決問題的方法,這就要求在復(fù)習(xí)階段培養(yǎng)將知識點聯(lián)系起來并融會貫通的本領(lǐng)。下面通過試題舉例說明這一要求。
例2 (2002年下填空題第10題)以下程序運行后的輸出結(jié)果是______。
viod fun(int x, int y)
{x = x + y ; y = x - y ; x = x - y ;
printf ( "% d, % d, ", x, y );}
main ( )
{int x = 2, y = 3;
fun (x, y);
printf ("% d, % d" , x, y);}
函數(shù)fun的功能是交換兩個變量x和y的數(shù)值,所以在fun函數(shù)中首先輸入_____(3, 2),這一步大部分考生都能寫對,關(guān)鍵是要看在主函數(shù)中的printf輸出什么。在C語言中,數(shù)據(jù)一般只從實參單向傳遞給形參,形參值的變化不會影響對應(yīng)的實參,所以盡管在這兩個函數(shù)中變量名都是X和y,但主函數(shù)里x、y的值并沒有改變。正確答案是3, 2, 2, 3。本題難度為0.28,反映了70%的考生不能完全理解函數(shù)間實參與形參之間數(shù)據(jù)傳遞過程。
本題關(guān)于考核函數(shù)之間數(shù)據(jù)傳遞的考題,如果在復(fù)習(xí)時有意識地將相關(guān)聯(lián)的知識前后聯(lián)系起來,就可以通過對比深化對知識的理解。類似這樣的知識點還有很多,比如:數(shù)組形式的字符串和指針方式的字符串等。
三、重視動手實踐,提高操作水平
計算機語言類考試考查考生使用該語言在編程方面的基本能力和熟練程度,這個能力包括了閱讀程序、編寫程序和調(diào)試程序的能力。當(dāng)然,無論紙筆考試還是上機考試都是有時間的要求,考生必須努力提高使用語言編程的熟練程度,才能交一份滿意的答卷。
這里所強調(diào)的"動手"包括兩個方面:一是不能只看不做,要通過一定量的練習(xí)題深化對知識的理解。二是必須上機實踐,能夠獨立編寫、調(diào)試應(yīng)用程序。這兩者都不可缺少。下面兩道試題反映了動手實踐的重要性。
例3 (2002年下填空題第6題)設(shè)有定義:int n, * k=&n;以下語句將利用指針變量k
讀寫變量n中的內(nèi)容,請將語句補充完整。
scanf("%d",______ );
printf("%d\n", ______);
本題的定義語句中定義了一個int類型變量n和一個基類型為int類型的指針變量k,并同時給指針變量k賦n的地址作為初值,使k指向變量n。因為scanf函數(shù)要求輸入項是地址,而k中就是n的地址,因此第一個下劃線處應(yīng)填k,第二個下劃線處應(yīng)填*k。很多考生看到在說明語句中同時出現(xiàn)"*"和"&"就不知如何理解,其實,這是一個給指針變量賦地址初值的基本問題,這兩道題的答對率都很低。雖然在教材"指針"這一章的例題中沒有給出這類例子,但在教材中有關(guān)指針的各章節(jié)的習(xí)題中就多次出現(xiàn)這類的語句,這樣的考核并沒有超過大綱的要求?忌軌蚩炊空碌膬H有的幾個例題是遠遠不夠的,必須動手做一定量的習(xí)題,更有必要上機操作,自己編寫程序。