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()。