點擊查看:2018年12月計算機二級C語言沖刺試題及答案匯總
程序改錯題
使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果為
TC1
TC2
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include
#include structTCO
{
//********error********
virtualvoidfun();
};
classTCl:publicTCO
{
voidfun()
{
cout<<"TCl"< }
};
classTC2:publicTCO
{
voidfun()
{
cout<<"TC2"< }
};
voidmain()
{
TCO"P;
TClobj1;
TC2obj2;
//********error********
p=*obj1;
p->fun();
//********error********
p=*obj2;
p->fun();
return;
}
參考答案:
(1)應(yīng)改為“virtualvoidfun()=0;”。
(2)應(yīng)改為“p=&obj1;”。
(3)應(yīng)改為“p=&obj2;”。
【解析】如果在基類中不使用這個虛函數(shù),其返回值也是沒有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)時初始化為0的函數(shù)。即第2處的“virtualvoidfun()=0;”。第2處的P為指針變量,將對象obj1賦值給P,實際上蹙P指向?qū)ο髈bj1的地址,所以將“p=*obj1;”修改為“P=&obj1;”。第3處的“P=*obj2;”修改為“p=&obj2;”。
簡單應(yīng)用題
使用VC++6.0打開考生交件夾下的源程序文件2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(intN[4])的功能是用4個數(shù)字,組成互不相同且無重復數(shù)字的3位數(shù),并將滿足所有條件的數(shù)字輸出到屏幕,
并且每輸出一個3位數(shù)就換一行。
程序分析:可填在百位、十位、個位的數(shù)字都是1、2、3、0。組成所有的排列后再去掉不滿足條件的排列。如果判定第一個數(shù)字是0,則也去掉。
試題程序:
#include
voidfun(intN[4])
{
}
intmain()
intN[4]={1,2,3,0};
fun(N):
return0;
}
參考答案:
inti,j,k;
for(i=0;i<4;i++)//百位循環(huán)
{
for(j=0;j<4;j++)//十位循環(huán)
for(k=0;k<4;k++)//個位循環(huán)
{
if(i!=j&&j!=k&&k!=i&&N[i]!=0)//
當三位數(shù)不同,并且百位不為0
{
cout< }
}
}
【解析】本題利用3層循環(huán),對3位數(shù)字是否相同進行判斷。如果3位數(shù)不同,并且百位不為0,那么依次輸出這3 位數(shù),即由3位數(shù)組成的數(shù)字。
綜合應(yīng)用題
使用VC++6.0打開考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。
(1)基類People完成打印功能,定義其中的打印函數(shù)為
虛函數(shù),請在注釋1后添加適當?shù)恼Z句。
(2)類Boy繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為1,
請在注釋2后添加適當?shù)恼Z句。
(3)類Girl繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為0,請在注釋3后添加適當?shù)恼Z句。
(4)實現(xiàn)函數(shù)fun,用于傳遞不同的類型,打印出性別,請在注釋4后添加適當?shù)恼Z句。
輸出的內(nèi)容如下:
Sex=Boy
Sex=Girl
注意:除在指定位暨添加語句之外,請不要改動程序中的其他內(nèi)容。
試題程序:
#include
classPeople
{
public:
//********1********
voidprint(){}
intsex;
};
classBoy:publicPeople
{
publiC:
Boy()
{
//********2********}
voidprint()
{
cout<<"Boy"< }
};
classGirl:publicPeople
{
public:
Girl()
{
//********3********}
voidprint()
{
cout<<"Girl"< }
};
//********4********{
cout<<"Sex=";
p.print();
}
intmain()
{
Boym:
fun(m);
Girln:
fun(n);
return0;
}
參考答案:
(1)將“voidprint(){};”補充完整為“virtualvoidprint(){};”。
(2)應(yīng)添加“sex=1;”。
(3)應(yīng)添加“sex=0;”。
(4)應(yīng)添加“voidfun(People&p)”。
【解析】第1處要求“基類People完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以將第1處的“voidprint(){}”語句修改為“virtualvoidprint(){}”。第2處要求“類Boy繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為l”;怭eople中變量sex用來存放性別,Boy繼承People,所以Boy中性別的變量可以使用基類中的sex變量,設(shè)置性別為1,即“sex=1;”。第3處要求“類Girl繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為0”。在第3處添加語句“sex=0;”。第4處要求“實現(xiàn)函數(shù)fun,用于傳遞不同的類型,打印出性別”。根據(jù)“P.print();”語句知道,fun函數(shù)的形參為指針P,由于它調(diào)用了基類People中的成員函數(shù)print,所以P的基類為People,即添加函數(shù)fun的定義為“voidfun(People&p)”。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |