第 1 頁:答案與解析 |
點擊查看:2018年3月全國計算機二級C++上機試題及答案匯總
一、程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出為
10
TC1
注意:不要改動main函數(shù),不能增加或刪除行,也不能
更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include
classTC1
{
public:
TC1()
{
}
//********error********
private:
virtual~TC1()
{
usingnamespacestd;
cout<<"TCl"< }
};
classTC2:publicTC1
{
public:
//********error********
explicitTC2(inti)
{
m_i=i;
}
TC2&operator()(inti)
{
this->m_i=i;
}
voidprint()
{
//********error********
cout< }
private:
intm_i;
};
voidfun(TC2C1)
{
C1.print();
}
intmain()
{
fun(TC2(10));
return0;
}
二、簡單應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件
2.cpp。請完成函數(shù)fun(intx),該函數(shù)的功能是將X的值轉(zhuǎn)換成二進制數(shù)輸出到屏幕,并且在函數(shù)中調(diào)用寫函數(shù)WriteFile將結(jié)果輸出到2.txt文件中。
例如x=6,6的二進制數(shù)為110,則輸出到屏幕的數(shù)為110。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include(iostream)
#include(fstream)
#include(cmath)
usingnamespacestd;
voidWriteFile(char*str)
{
ofstreamout1;
out1.open("2.txt",ios—base::binary|ios_base::app);
for(inti=0;str[i]!=0;i++)
out1.put(str[i]);
out1.close();
}
voidfun(intx)
{
}
voidClearFile()
{
ofstreamout1;
out1.open("2.txt");
out1.close();
}
intmain()
{
ClearFile();
fun(13);
return0;
}
三、綜合應(yīng)用題
用vc++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了多個類,其中定義的類并不完整,按照要求完成下列操作,將類的定義補充完整;使其輸出如下:
TC2
TC3
TCl
(1)類TC2公共繼承于TC1,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)print函數(shù)為虛函數(shù),請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)修改語句,使得p指定對象0bj3,請在注釋3后添加
適當(dāng)?shù)恼Z句。
(4)修改語句,利用P調(diào)用print函數(shù),完成輸出信息,在注釋4后添加適當(dāng)?shù)恼Z句。
注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。
試題程序:
#include
usingnamespacestd;
classTCl
{
public:
voidprint()
{
cout<<"TCl"< }
};
//********1********
classTC2
{
public:
//********2********
voidprint()
{
cout<<"TC2"< }
};
classTC3:publicTC2
{
public:
voidprint()
{
cout<<"TC3"< }
};
intmain()
{
TC20bj2;
TC30bj3;
TC1*P;
obj2.print();
obj3.print();
//********3********
p=obj3;
//********4********
P.print();
return0;
}
微信搜索"考試吧"了解更多考試資訊、下載備考資料
一、程序改錯題
(1)刪除“private:”語句。
(2)應(yīng)改為“TC2(inti)”。
(3)應(yīng)改為“std::cout< 【解析】本題中第1處的“virtual~TC1()”語句是TC1析構(gòu)函數(shù),不是私有函數(shù),所以刪除“private:”。第2處“ex-plicitTC2(inti)”構(gòu)造函數(shù)語句中的“explicit”是禁止隱式轉(zhuǎn)換。程序中無法實現(xiàn)對類TC2的直接使用,所以這里應(yīng)該將其刪除。即“TC2(inti)”。在第3處實現(xiàn)fun函數(shù)中m-i的標(biāo)準輸出,即在屏幕上輸出10。在程序中用到C++標(biāo)準庫時,要使用std標(biāo)準命名空間進行限定。cout為標(biāo)準庫函數(shù),所以要聲明cout是在命名空間std中定義的流對象,即“std::cout< 二、簡單應(yīng)用題
charstr[32];
inti;
for(i=30;i>=0;i--)//計算二進制
{
if(x%2)str[i]=’1’;//求余,如果余不為零字符串
str第i位為1
elsestr[i]=’0’;//否則為0
x>>=1;
if(!x)break;
}
str[31]=’\0’;//串加尾符
cout<<&str[i]< writeFile(&str[i]);
【解析】本題要求定義存放二進制的字符串str。利用for循環(huán)對十進制數(shù)字x進行取余運算,直到余數(shù)為0結(jié)束。如果取余結(jié)果為0,則二進制字符串這個字符位的值為0,否則為1。調(diào)用WriteFile,將運算結(jié)果存入文件。
三、綜合應(yīng)用題
(1)將“classTC2”補充完整為“classTC2:publicTCl”。
(2)將“voidprint()”補充完整為“virtualvoidprint()”。
(3)將“p=obj3;”修改為“p=&obj3;”。
(4)將“P.print();”修改為“p->print();”。
【解析】本題中第1處要求“類TC2公共繼承于TC1”。從已有的類產(chǎn)生一個新的子類,成為類的派生。聲明派生類的一般形式為“class派生類名:[繼承方式]基類名”。根據(jù)題目中的要求以及派生類的一般形式,在第1處添加語
句“ClaSSTC2:publicTC1”。第2處要求“print函數(shù)為虛函數(shù)”。在C++中,用virtual聲明的函數(shù)為虛函數(shù)。因此第2處的語句應(yīng)修改為“virtualvoidprint()”。第3處要求“使得P指定對象obj3”。p為指針變量,obj3為類的對象,將一個指針變量指向另一個變量,只要把被指向的變量的地址賦給指針變量即可。取對象obj3地址的語句為&obj3,所以這里補全語句為“p=&obj3;”。第4處要求“利用P調(diào)用print()函數(shù)”。C++中用“->”運算符實現(xiàn)成員訪問,因此調(diào)用print函數(shù),應(yīng)將第4處的語句修改為“p->print();”。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
2018年全國計算機等級考試復(fù)習(xí)知識點匯總(各科目)
2018全國計算機等級考試備考經(jīng)驗及應(yīng)試技巧匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |