當前位置:才華齋>計算機>計算機二級>

全國計算機二級考試C++上機考試試題及答案

計算機二級 閱讀(2.44W)

全國計算機二級考試上機試題是一個比較難的模組,需要大家在考前不斷的做一些練習試題,下面就是小編跟大家分享全國計算機二級考試C++上機考試試題及答案,歡迎大家閱讀!

全國計算機二級考試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));”。