點擊查看:2018年9月計算機二級C++考試考前過關練習題匯總
程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出為
10
TC1
注意:不要改動main函數,不能增加或刪除行,也不能
更改程序的結構,錯誤的語句在//******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;
}
參考答案:
(1)刪除“private:”語句。
(2)應改為“TC2(inti)”。
(3)應改為“std::cout<
【解析】本題中第1處的“virtual~TC1()”語句是TC1析構函數,不是私有函數,所以刪除“private:”。第2處“ex-plicitTC2(inti)”構造函數語句中的“explicit”是禁止隱式轉換。程序中無法實現(xiàn)對類TC2的直接使用,所以這里應該將其刪除。即“TC2(inti)”。在第3處實現(xiàn)fun函數中m-i的標準輸出,即在屏幕上輸出10。在程序中用到C++標準庫時,要使用std標準命名空間進行限定。cout為標準庫函數,所以要聲明cout是在命名空間std中定義的流對象,即“std::cout< 二、簡單應用題
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)對十進制數字x進行取余運算,直到余數為0結束。如果取余結果為0,則二進制字符串這個字符位的值為0,否則為1。調用WriteFile,將運算結果存入文件。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦: