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