2016年12月計算機二級C++上機改錯題訓練

來源:文萃谷 1.07W

計算機二級對於很多考生來説還是比較有難度的,那麼怎樣順利通過二級考試呢?這就需要大家平時多練習和找方法了。以下是本站小編整理的2016年12月計算機二級C++上機改錯題訓練,希望對大家有幫助!

2016年12月計算機二級C++上機改錯題訓練

  改錯題一:

使用VC6打開考生文件夾下的工程kt8_1,此工程包含一個源程序文件kt8_,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下:

f1functionofderive

f2functionofbase

f4functionofbase

源程序文件kt8_清單如下:

#include

classbase

{ public:

/**********found**********/

voidf1(){cout<<"f1functionofbase"<

virtualvoidf2(){cout<<"f2functionofbase"<

virtualvoidf3(){cout<<"f3functionofbase"<

voidf4(){cout<<"f4functionofbase"<<>

/**********found**********/

classderive::publicbase

{ voidf1(){cout<<"f1functionofderive"<

voidf2(intx){cout<<"f2functionofderive"<

voidf4(){cout<<"f4functionofderive"<<>

voidmain()

{ base*p;

deriveobj2;

/**********found**********/

p=obj2;

p->f1();

p->f2();

p->f4(); }

  【參考答案

(1)將void f1(){ cout<<"f1 function of base"<

改為:virtual void f1(){ cout<<"f1 function of base"<

(2)將class derive::public base

改為:class derive:public base

(3)將p=obj2;

改為:p=&obj2;

  【試題解析】

(1)主要考查對虛函數的深刻理解,虛函數是動態聯編的基礎,也是實現多態性的重要方法,它可以根據不同的情況動態的選擇執行哪一個函數。在派生類中實現虛函數應該滿足與基類的`同名函數完全相同,並且使用關鍵字virtual修飾,本題中由輸出結果中的f1 function of derive可知,必須將基類base的成員函數f1()定義為虛函數;

(2)主要考查對派生類定義格式的掌握,應該使用“:”後面是繼承列表,而“::”是作用域符;

(3)主要考查類對象的定義與使用,p是一個指針類型的變量,給它的賦值應該是一個地址,即使用取地址操作符&。

  改錯題二:

使用VC6打開考生文件夾下的工程kt9_1,此工程包含一個源程序文件kt9_,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下:

4,5

20

源程序文件清單如下:

#include

classA

{ protected:

intn,m;

public:

voidset(inta,intb){m=a;n=b;}

voidshow(){cout<

/**********found**********/ }

classB:publicA

{ ints;

public:

voidset(){s=m*n;}

voidshows(){cout<

voidmain()

{

Bb;

/**********found**********/

();

();

(); /**********found**********/

();

}

  【參考答案】

(1)在“}”後添加分號

(2)將();改為:b.A::set(4,5);

(3)將();改為:s();

  【試題解析】

(1)主要考查對類定義格式的掌握,類的結尾應該使用";";

(2)主要考查對基類與派生類函數調用關係的掌握,根據所要求的輸出結果,應該調用的函數為類A的set,而不是類B自身的set函數,應該避免調用的二義性;

(3)主要考查對繼承與派生的理解,由所要求輸出結果可知正確:s()。

熱門標籤