糯米文學吧

位置:首頁 > 計算機 > 計算機二級

計算機二級C++練習題:程序改錯題

為了使廣大考生在備戰計算機等級考試時,更快的掌握相應知識點,下面是小編搜索整理的計算機二級C++練習題:程序改錯題,供參考練習,預祝考生們考出自己理想的成績!

計算機二級C++練習題:程序改錯題

  計算機二級C++練習題:程序改錯題01

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

4,5

20

源程序文件清單如下:

#include

classA

{protected:

intn,m;

public:

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

voidshow(){cout<<m<<","<<n<<endl;}

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

classB:publicA

{ints;

public:

voidset(){s=m*n;}

voidshows(){cout<<s<<endl;}};

voidmain()

{

Bb;

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

();

();

();

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

();

}

參考答案

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

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

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

【試題解析】

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

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

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

  計算機二級C++練習題:程序改錯題02

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

classBase

classD1

classD2

classD3

finBase

源程序文件kt10_清單如下:

#include

classBase

{public:

Base(){cout<<"classBase"<<endl;}

voidf(){cout<<"finBase"<<endl;}};

classD1:virtualpublicBase

{public:

D1(){cout<<"classD1"<<endl;}

voidf(){cout<<"finD1"<<endl;}};

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

classD2:publicBase

{public:

D2(){cout<<"classD2"<<endl;}};

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

classD3::publicD1,publicD2

{public:

D3(){cout<<"classD3"<<endl;}};

voidmain()

{D3d;

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

d.f();}

 【參考答案】

(1)將classD2:publicBase

改為:classD2:virtualpublicBase

(2)將classD3::publicD1,publicD2

改為:classD3:publicD1,publicD2

(3)將d.f();改為:::f();

 【試題解析】

(1)主要考查對虛基類的理解,虛基類可以解決二義性的問題,其定義方式是在繼承列表中使用virtual關鍵字,使用虛基類可以避免程序運行中對基類函數調用的不惟一;

(2)主要考查對類的定義方法的掌握,“::”為作用域符,此處應該使用“:”,因為後面是繼承列表;

(3)主要考查對虛基類函數調用過程的理解,只有使用"::"限定才能訪問基類函數,否則將會調用自身的函數,如果該類沒有該函數的定義,則會自動調用其父類的該函數,所以必須使用“::”符號。