點擊查看:2018年9月計算機二級C++考試考前過關練習題匯總
程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出為
10
TC1
注意:不要改動main函數(shù),不能增加或刪除行,也不能
更改程序的結構,錯誤的語句在//******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析構函數(shù),不是私有函數(shù),所以刪除“private:”。第2處“ex-plicitTC2(inti)”構造函數(shù)語句中的“explicit”是禁止隱式轉(zhuǎn)換。程序中無法實現(xiàn)對類TC2的直接使用,所以這里應該將其刪除。即“TC2(inti)”。在第3處實現(xiàn)fun函數(shù)中m-i的標準輸出,即在屏幕上輸出10。在程序中用到C++標準庫時,要使用std標準命名空間進行限定。cout為標準庫函數(shù),所以要聲明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)對十進制數(shù)字x進行取余運算,直到余數(shù)為0結束。如果取余結果為0,則二進制字符串這個字符位的值為0,否則為1。調(diào)用WriteFile,將運算結果存入文件。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |