摘 要:江蘇計算機二級(VC++)上機考試歷來被認為是學生通過等級考試的一大難點,總結多年教學的經驗,針對歷屆上機考題進行了分析,分別對其改錯題和編程題給出了相應的策略。
關鍵詞:江蘇計算機二級(VC++);上機考試分析與策略
江蘇計算機二級(VC++)上機考試,主要是針對程序改錯和類的編程進行考核,程序改錯考核的是學生對程序的理解和調試能力;而類的編程主要是考核學生對面向對象的編程能力。而這兩類題的解答在筆者看來,都有很多可以應對的技巧和策略,可分別對其分析后,進行歸納總結。
1 改錯題
一般程序的錯誤分為兩種,一種是語法錯誤,程序一開始編譯時就能發現,也比較容易改正;另一種是邏輯錯誤,編譯時不會報錯,但在運行時,可能運行不出來,或運行不出正確結果,這時可以由運行的結果,倒退回去找錯,看為什么會出現上述結果,推算出錯誤之處予以改正。
1.1 改錯題解題步驟
改錯題首先要讀題干,讀懂下面程序要實現什么功能。接下來讀程序,先別急著改錯,盡量弄懂程序如何實現上述功能,各程序段分別做了哪些操作,來實現以上功能。接下來才開始改程序,看每個程序語句對完成上述功能所要完成的任務,如果沒有看懂的要再聯系上下程序段看,如果沒有做到所要完成的任務,再看應該怎么改,改完整個程序后可以編譯和運行,也可以邊改邊編譯或運行。
1.2 常見錯誤要點分析
1.2.1 預編譯命令
(1)包含庫函數相應的頭文件,如果包含的頭文件寫錯,這時程序中頭文件所在的相應庫函數不能被識別而報錯。
如:#include
#include
(2)宏定義不正確,這時編譯出錯不是在宏定義,而是在宏代換后的程序行。因為宏定義是預編譯處理,在程序編譯前中作代換不作語法檢查,代換后編譯時才作語法檢查。
如:#define pi 3.14; //改為 #define pi 3.14
1.2.2 變量
變量定義是否正確,變量是否有正確的初始值。變量定義的位置決定了變量的作用域。變量只在其作用域有效。變量定義后如要參與運算,變量需要給出正確的初始值。
如:int s,a[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
s+=a[i];
上面和變量s給出了定義,但沒賦初值,無法正確對數組元素進行求和。
1.2.3 數組
定義一維數組時數組長度要求為正整型常量,定義二維數組時列數不能省略。數組中元素下標是否超界,是數組元素使用時經常忽略的問題,在編譯時也并不對數組元素下標超界作語法檢查,但在運行時會報錯。
如:int a[5]={1,2,3,4,5},i;
for(i=0;i<=5;i++)
(1)類中先定義私有數據成員,再定義公有的成員函數,每一個成員函數用一對{ }括起來,整個類用一對花括號括起來加分號結束。
(2)類中的成員函數主要包含構造函數,輸出成員函數及功能成員函數,功能成員函數需要掌握相應類型的一些常用算法,如:數值求階乘、數字與數字字符轉換、數位分離、求素數、水仙數等,一維數組的選擇排序、二分查找法,求最大值最小值等,二維數組的左移和右移、對角線、外圍元素等,字符串的遍歷、逆序、插入,刪除和找子串等。另外對于指針成員,類中還需定義析構函數來釋放指針指向的動態空間等。
(3)主函數中根據構造函數的形參,準備相應實參,定義類的對象,再通過對象來調用類定義的成員函數,而對象成員函數中所操作的成員就是當前對象的成員。
2.2 不同類型成員類的編程
對于等級考試中類的編程框架,一般比較固定,先定義一個類,在主函數中定義類的對象,并調用對象的成員函數進行類的測試。類的定義中,先寫私有的數據成員,再寫公有的成員函數。公有成員函數一般包括構造函數,輸出函數和一至兩個功能成員函數或輔助函數。功能成員函數或輔助函數因不同的題目和算法而不同;而對于構造函數和輸出成員函數,則可根據其不同類型的數據成員進行如下歸納。
2.2.1 數值類型變量成員
數據類型成員,是單個變量做數據成員,構造函數中形參直接為變量賦值,但不是所有成員變量都能直接由構造函數賦值,有些成員變量的值需要進行相應運算和操作才能被求值,這時通常會用功能成員函數來實現相應成員變量的賦值。
2.2.2 數值型數組成員
構造函數一般用循環賦值,一維的用一重循環給一維數組成員的元素賦值,二維的用兩重循環給二維數組成員的元素賦值。還有一些數組不是直接由構造函數賦值,而是派生生成的,利用成員函數給派生數組元素賦值。輸出函數,一維的用一個循環將一維數組成員的元素一行輸出,再換行;二維的外行循環體包含內列循環和換行語句,將二維數組成員的元素按行輸出。
2.2.3 數值型指針成員
構造函數中一般先用new數值類型[數組長度],返回數組的首地址給指針成員賦值,再用循環給數組元素賦值。指針成員的賦值也可以在成員函數中做。析構函數用delete[]指針。輸出函數利用循環將指針指向的數組元素按行輸出。
2.2.4 字符類型數組成員
構造函數用拷貝函數將形參數組的字符串整體拷貝給字符數組成員,輸出函數直接輸出字符數組名,可以將字符數組成員指向的字符串作整體輸出。
2.2.5 字符類型指針成員
構造函數一般是先用new char[形參指針指向字符串的字符個數+1],定義一個動態字符數組,返回動態字符數組的首地址給字符指針成員,再將形參指向的字符串用拷貝函數拷到字符指針指向的字符數組,析構函數用delete[]指針,釋放指針指向的動態內存空間,輸出函數直接輸出字符指針成員指向的字符串。
3 總結
通過歸納計算機二級VC++上機考試改錯題的各種類型錯誤,并對各種類型的數據成員進行類的編程,可以有針對性地作一些相應的練習來加強上機應考的能力,本文中所提到的一些策略,希望能對上機考試的復習起到拋磚引玉之功效。
[參考文獻]
[1]凌翌.計算機等級考試與高校計算機基礎教學改革[J].計算機教育,2010,11.
[2]李聯寧.計算機等級考試的研究與思考[J].計算機教育,2011,10.
[3]高校計算機等級考試的教學與思考[J].中國科技信息,2005,2.
[4]黃霞.獨立學012院計算機文化基礎教學改革探索[J].無線互聯科技,2012,10.
[5]秦春影,喻曉峰,仝海燕,唐淑萍.貴州大學報(自然科學版)[J].計算機等級考試組卷策略分析與研究,2012,4.