全國計算機二級考試上機試題是一個比較難的模組,需要大家在考前不斷的做一些練習試題,下面就是小編跟大家分享全國計算機二級考試C++上機考試試題及答案,歡迎大家閱讀!
一、程式改錯題
使用VC++6.0開啟考生資料夾下的源程式檔案
,該程式執行時有錯誤,請改正程式中的錯誤。本程式要求實現的功能為從鍵盤輸入一個字串,並將結果儲存到檔案中。
注意:不要改動main函式,不能增加或刪除行,也不能更改程式的結構,錯誤的語句在
//******error******的下面。
試題程式:
#include
#include
//********error********
usingstd;
voidWriteFile(char*s)
{
ofstreamout1;
//********error********
("",binary|app);
for(inti=0;s[i]!=0;i++)
{
//********error********
(s[i]);
}
e();
}
voidClearFile()
{
ofstreamout1;
("");
e();
}
intmain()
{
chars[1024];
ClearFile();
cout<<"pleaseinputastrin9:"< ine(s,1024);
WriteFile(s);
return0;
}
二、簡單應用題
使用VC++6.0開啟考生資料夾下的源程式檔案。請完成函式fun(intx)的定義,該函式功能是判定x的所有約數,並且在函式中呼叫寫函式WriteFile將結果輸出到檔案中。
例如:x=100的約數為124510202550100。
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。
試題程式:
#include #include(fstream)
#include(cmath)
usingnamespacestd;
voidWriteFile(intc)
{
ofstreamout1;
("",ios_base::binary|ios_base::app);
out1< e();
}
voidfun(intx)
{
}
voidClearFile()
{
ofstreamout1;
("");
e();
}
intmain()
{
ClearFile();
fun(100);
return0;
}
三、綜合應用題
使用VC++6.0開啟考生資料夾下的源程式檔案,其中定義了用於表示座標的類TCl,但類TCl的定義並不完整,按要求完成下列操作,將類的定義補充完整。
(1)宣告TC2類為TC1類的友元類,請在註釋1後新增適當的語句。
(2)完成類的建構函式,分別對成員變數賦值,請在註釋2後新增適當的語句。
(3)完成類的建構函式,分別對成員變數賦值,請在註釋3後新增適當的語句。
(4)完成計算平面上兩點之間距離的函式JuL,計算的方法為X座標之差的平方與Y座標之差的平方之和的開方。請在註釋4後新增適當的語句。
注意:僅在函式指定位置新增語句,請勿改動主函式main與其他函式中的任何內容。
試題程式:
#include(iostream)
#include(cmath)
usingnamespacestd;
classTC1
{
//********1********
public:
//********2********
{
X=a;
Y=b;.
}
//********3********
{
X=a:
Y=0;
}
voidprint()
{
cout<<"x="< cout<<"y="< }
private:
floatX,Y:
};
classTC2
{
public:
floatJuL(TC1&p,TC1&q);
};
floatTC2;:JuL(TCl&p,TCl&q)
{
floatresult;
//********4********
cout< returnresult;
}
intmain()
{
TClp(10,10),q(20);
TC2d;
(p,q);
return0;
}
上機考試試題答案與解析
一、程式改錯題
(1)應改為“usingnamespacestd;”。
(2)應改為“("",ios::binary|ios::app);”。
(3)應改為“(s[i]);”。
【解析】本題第1處的“usingstd;”是在程式中引入標準名稱空間std,對於C++中引入標準名稱空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,呼叫成員函式open中,輸入、輸出方式是在ios類中定義的,所以“("",binary|app);”語句缺少類ios,即第2處的語句修改為“("",ios::binary|ios::app);”。第3個標識應該用流成員函式put輸出字元,所以第3處的語句修改為“(s[i]);”。
二、簡單應用題
for(inti=1:i<=x;i++)
{
if(x%i==0)//如果x被i整除,那麼i為X的約數
{
writeFile(i);//將約數i存入檔案
}
}
【解析】本題中由1到x,迴圈判斷其中是否有X的約數。如果x被i整除,那麼i為x的`約數最後呼叫Write-File函式,將約數i存入檔案。
三、綜合應用題
(1)應新增“friendclassTC2;”。
(2)應新增“TCl(floata,floatb)”。
(3)應新增“TCl(floata)”。
(4)應新增“result=sqrt((P.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y));”。
【解析】本題中第1處要求“宣告TC2類為TC1類的友元類”。C++中宣告友元類的一般形式為“friend類名;”,所以這裡補全“friendclassTC2;”。第2處要求“完成類的建構函式,分別對成員變數賦值”。程式中TC1類的建構函式缺少定義,建構函式首部的一般格式為建構函式名(型別1形參1,型別2形參2,……),所以在第2處補金“TC1(floata,float
b)”。第3處要求“完成類的建構函式,旁別對成員變數賦值”。同理,第3個標識下補全“TC1(floata)”。第4處要求“完成計算平面上兩點之間的距離函式JuL”。題目中已經給出了計算方法,X座標之差的平方與Y座標之差的平方之和的開方。利用C++中的開方函式sqrt補全函式中的兩點之間的距離。即“result=sqrt((P.X-q.X)*(p.X-q.X)+(p.Y-a.Y)*(p.Y-q.Y));”。