糯米文學吧

位置:首頁 > 計算機 > 計算機二級

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

全國計算機二級考試上機試題是一個比較難的模塊,需要大家在考前不斷的做一些練習試題,下面就是小編跟大家分享全國計算機二級考試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));”。