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