計(jì)算機(jī)二級(jí)C上機(jī)考試試題及答案
程序改錯(cuò)題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使程序正確運(yùn)行,并且使程序輸出的結(jié)果為
0K
注意:錯(cuò)誤的語(yǔ)句在//******error******的下面,修改該語(yǔ)句即可。
試題程序:
#include
classTC
{
public:
TC()
{
a=b=0:
}
private:
inta,b;
};
classTCl:publicTC
{
public:
TC1()
{
}
//******error******
virtualvoidfunc();
};
classTC2:publicTCl
{
public:
TC2()
{
a=0:
b=0:
}
voidfunc()
{
//******error******
cout<<"OK" }
private:
inta;
intb;
};
voidmain()
{
TC20bj;
//******error******
TCl*p=(TCl*)obj;
p->func();
}
(1)應(yīng)改為“virtualvoidfunc()=0;”。
(2)應(yīng)改為“cout<<"0K"<(endl;”。
(3)應(yīng)改為“TCl*p=(TCl*)&obj;”。
【解析】本題中TCl類中的func函數(shù)是純虛函數(shù),純虛函數(shù)的定義格式為virtual<函數(shù)類型><函數(shù)名>((參數(shù)表>)=0”,因此第1處的語(yǔ)句應(yīng)為“virtualvoidfunc()=0;”。func函數(shù)沒有參數(shù)表。編譯程序后發(fā)現(xiàn)第2處的語(yǔ)句有錯(cuò)誤,cout流中的數(shù)據(jù)是用流插入運(yùn)算符“<<”順序加入的,因此“<”不正確,應(yīng)改成“cout<<"0K"<
綜合應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。
(1)完成TC的構(gòu)造函數(shù),請(qǐng)改正注釋1后的錯(cuò)誤。
(2)完成func函數(shù)定義,請(qǐng)改正注釋2后的錯(cuò)誤。
(3)初始化CmyClass的成員變量Num3為4,請(qǐng)改正注釋3后的錯(cuò)誤。
(4)完成func函數(shù),請(qǐng)改正注釋4后的錯(cuò)誤。
輸出的結(jié)果為
Num1=12
Num2=18
Num3=16
Num1=4
Num2=2
Num3=19
注意:除在指定位置添加語(yǔ)句之外,不要改動(dòng)程序中的其他內(nèi)容。
試題程序:
#include
classTC
{
public:
//********1********
TC(inti,intj)
{
Numl=i;
Num3+=i:
}
voiddisplay()
{
cout<<"Num1="< cout<<"Num2="< cout<<"Num3="< }
voidAddNum(inti)
{
Num3+=i;
}
private:
intNum1;
constintNum2;
staticintNum3;
//********2********
};
//********3********
voidfunc()
{
TCobj(1,2);
obj.Num1=4;
//********4********
obj.AddNum();
ohj.display();
}
voidmain()
{
TCmyObj(12,18);
myObj.display();
rune();
return;
}
(1)將“TC(inti,intj)”補(bǔ)充完整為“TC(inti,intj):Num2(j)”。
(2)應(yīng)添加“friendvoidfunc();”。
(3)應(yīng)添加“intTC::Num3=4;”。
(4)將“obi.AddNum()”補(bǔ)充完整為“obj.AddNum(2);”。
【解析】本題在第1處完成類的構(gòu)造函數(shù)初始化類的成員變量,常數(shù)據(jù)成員也必須初始化,并且不能被更新,常數(shù)據(jù)成員的初始化只能通過(guò)構(gòu)造函數(shù)的成員初始化類表進(jìn)行,因此第1處的語(yǔ)句應(yīng)為“TC(inti,intj):Num2(j)”,i用來(lái)初始化Num1和Num3,j初始化Num2。第2處完成fune的函數(shù)定義,由審題分析可知,函數(shù)fune為類的友元,故第2處的語(yǔ)句應(yīng)為“friendvoidrune();”。第3處的語(yǔ)句是靜態(tài)成員的初始化,靜態(tài)數(shù)據(jù)成員的初始化格式為“(數(shù)據(jù)類型)<類名>::<靜態(tài)數(shù)據(jù)成員)=<初始值>”,因此第3處的語(yǔ)句應(yīng)為“intTC::Num3=4;”。成員函數(shù)AddNum帶有一個(gè)整型參數(shù),因此調(diào)用此函數(shù)時(shí)必須有參數(shù)傳入,可由程序運(yùn)行結(jié)果分析得知傳入的參數(shù)值的大小。在fun函數(shù)內(nèi),定義TCobj(1,2)后,obj.Num1=1,obj.Num2=2,Num3=16+1=17,obj.Num1=4,Numl為4,obj。Num2為常數(shù)據(jù)成員,其值不會(huì)改變,調(diào)用AddNum函數(shù)后調(diào)用顯示函數(shù)顯示成員變量值,可知Num3為19,因此AddNum()的參數(shù)為19-17=2,即第4處的語(yǔ)句應(yīng)為“obj.AddNum(2);”。
【計(jì)算機(jī)二級(jí)C上機(jī)考試試題及答案】相關(guān)文章:
計(jì)算機(jī)二級(jí)C語(yǔ)言考試上機(jī)沖刺試題及答案03-03
2016計(jì)算機(jī)等級(jí)考試二級(jí)C++上機(jī)模擬試題及答案03-08
2016最新計(jì)算機(jī)二級(jí)C++上機(jī)試題及答案03-03
計(jì)算機(jī)等級(jí)二級(jí)C語(yǔ)言上機(jī)模擬試題及答案10-25
計(jì)算機(jī)二級(jí)考試C++試題及答案03-27
計(jì)算機(jī)二級(jí)VB上機(jī)試題及答案03-14
2016年9月計(jì)算機(jī)二級(jí)C語(yǔ)言考試上機(jī)沖刺試題及答案03-02