




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年陜西省寶雞市全國計(jì)算機(jī)等級考試
C++語言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
i.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測
試用例的測試方法是o
A.黑箱測試法B.白箱測試法C.錯誤推測法D.安裝測試法
2.類的說明如下,請指出錯誤的地方oclassMyclass{inta=lll;
public:Myclass(intx,inty);Myclass(intval);~Myclass();}
A.inta=lll;
B.Myclass(Intx,inty);
C.Myclass(intval);
D.?Myclass。;
3.C++對C語言作了很多改進(jìn),下列描述中,()使得C++語言發(fā)生了質(zhì)
變,即從面向過程變成了面向?qū)ο蟆?/p>
A.增加了一些新的運(yùn)算符B.允許函數(shù)重載,并允許設(shè)置默認(rèn)參數(shù)C.規(guī)
定函數(shù)說明必須用原型D.引進(jìn)了類和對象的概念
4.關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是o
A.A.實(shí)體完整性約束B.參照完整性約束C.域完整性約束D.用戶自定
義的完整性約束
5.對于拷貝構(gòu)造函數(shù)和賦值操作的關(guān)系,正確的是
A.拷貝構(gòu)造函數(shù)和賦值操作是完全一樣的操作
B.進(jìn)行賦值操作時,會調(diào)用類的構(gòu)造函數(shù)
C.當(dāng)調(diào)用拷貝構(gòu)造函數(shù)時,類的對象正在被建立并被初始化
D.拷貝構(gòu)造函數(shù)和賦值操作不能在同一個類中被同時定義
6.計(jì)算斐波那契數(shù)列第n項(xiàng)的函數(shù)定義如下:intfib(int
n){if(n==O)retum1;elseif(n==1)return2;elsereturnfib(n-l)+fib(n-2);}
若執(zhí)行函數(shù)調(diào)用表達(dá)式fih(2),函數(shù)fih被調(diào)用的次數(shù)是
A.lB.2C.3D.4
7考慮函數(shù)原型voidtest(inta,intb=7,charz=*),下面的函數(shù)調(diào)用中,屬
于不合法調(diào)用的是()o
A.test(5);B.test(5,8);C.test(6,#);D.test(O,0,*);
8.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是
()o
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和
DBMSD.沒有任何關(guān)系
9.循環(huán)鏈表的主要優(yōu)點(diǎn)是()
A.不再需要頭指針了
B.從表中任一結(jié)點(diǎn)出發(fā)都能訪問到整個鏈表
C.在進(jìn)行插入、刪除運(yùn)算時,能更好的保證鏈表不斷開
D.已知某個結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件
10.控制格式輸入/輸出的操作子中,設(shè)置域?qū)挼暮瘮?shù)是
A.wsB.octC.setfill(int)D.setw(int)
二、單選題(13題)
11.有下列程序:#include
voidmain()
#include<stdiO.h>
voidmain()
{intx=l,y=2,z=3;
if(x>y)
if(yVz)print{(〃%d〃,++z);
elseprintf(〃%d〃,++y);
printf%d\n”,x++);
程序的運(yùn)行結(jié)果是()oA.331B.41C.2D.l
12.下列選項(xiàng)中正確的定義語句是()。
A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;
13.下面的描述中,正確的是()。
A.A.virtual可以用來聲明虛函數(shù)
B.含有純虛函數(shù)的類是不可以用來創(chuàng)建對象的,因?yàn)樗翘摶?/p>
C.即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須建立構(gòu)造函數(shù)
D.靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化
14.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。
A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進(jìn)行初始化
B.靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用
C.靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
15.下面程序輸出的結(jié)果為()。
#include"iostream.h"
classA
{public:
A(){cOUt<<"CLASSA"<<endl;}
?A(){}};
ClaSSB:publicA
{public:
B(){cout<<"CLASSB"<<endl;}
?B(){}};
voidmain()
{A*P;
P=newB:
B*q:
q=newB;}
A.CLASSA
B.CLASSACLASSBCLASSBCLASSB
C.CLASSA
D.CLASSACLASSBCLASSBCLASSACLASSBCLASSBCLASSB
16.若有以下程序:
nwin()
(intk-2,i=2.m:
m=(k+=i?=k)i
coutVVmVV"JVViVVcndh
J
執(zhí)行后的輸出結(jié)果是()。
A.8,6B.8,3C.6,4D.7,4
17.耦合性和內(nèi)聚性是對模塊獨(dú)立性度量的兩個標(biāo)準(zhǔn)。下列敘述中正確的
是_________O
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
18.若有以下定義:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12);charc='a',d,g;
則下列表達(dá)式中,結(jié)果為4的是()。
A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]
19.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過
發(fā)送()。
A.調(diào)用語句B.命令C.口令D.消息
20.若有表達(dá)式“(w)?(-x):(++y)”,則其中與w等價的表達(dá)式是()。
A.w==lB.w==0C.W!=lD.W!=0
21.有如下程序:
#include<iostream>
usingnamespacestd;
classGA{
public:
virtualintftreturn1;}
};
classGB:publicGA{
public:
virtualintf{return2;}
};
voidshow(GAg){eout?9.f;}
voiddisplay(GA&g){cout?9.f;}
intmain
(
GAa;show(A.;display(A.;
GBb;show(B.;display(B.;
return0;
)
執(zhí)行這個程序的輸出結(jié)果是()。A.llllB.1211C.1112D.1212
22.對于一個類定義,下列敘述中錯誤的是
A.如果沒有定義拷貝構(gòu)造函數(shù),編譯器將生成一個拷貝構(gòu)造函數(shù)。
B.如果沒有定義缺省的構(gòu)造函數(shù),編譯器將一定生成一個缺省的構(gòu)造函
數(shù)。
C.如果沒有定義構(gòu)造函數(shù),編譯器將生成一個缺省的構(gòu)造函數(shù)和一個拷
貝構(gòu)造函數(shù)。
D.如果已經(jīng)定義了構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造
函數(shù)。
23.下列程序的運(yùn)行結(jié)果是()。
#include<iostream.h>
classA
(
inta;
public:
A{a=O;}
A(intaA.
(
a=aa;
cout?a++:
)
};
voidmain
AX,Y(2),z(3);
cout?end
A.00B.23C.34D.25
三、2.填空題(12題)
24.在面向?qū)ο蠓椒ㄖ?,類的?shí)例稱為。
25.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高和低冗余性、
數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。
26.類通過____與外界發(fā)生關(guān)系。
27.已知如下程序的輸出結(jié)果是23,請將畫線處缺失的部分補(bǔ)充完整。
#include<iostream>
usingnamespacestd;
classMyClass{
public:
voidPrint()const{eout<<23;}
);
intmain(){
MyClass*P=newMyClass();
.Print();
return0;
28.友元類的所有成員函數(shù)都是另一個類的【】。
29.從一個或多個基本表導(dǎo)出的表是一個【】,它是一個虛表。
30.[]是當(dāng)前軟件開發(fā)環(huán)境中富有特色的研究工作和發(fā)展方向。
31.語句cout<<'\n'還可表示為[]0
32.匯編語言是面向【】的,可以完成高級語言無法完成的特殊功能,
如與外部設(shè)備之間的一些接口工作。
33.注釋一般分為序言性注釋和注釋。
34.為解決在多重繼承環(huán)境中因公共基類帶來的問題,C++語言
提供了虛基類機(jī)制。
35.下列程序的輸出結(jié)果是____o
#include<iostream.h>
voidmain()
(
chara[]="abcdabcabfgacd";
intil=0,i2=0,i=0;
while(a[i])
(
if(a[i]=="a")il++;
if(a[i]=="b")i2++;
i++;
cout<<il<<""<<i2<<endl;
)
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
}
IJ********error*********
catch(chars)
(
cout?s?endl;
)
try
throw((int)0);
)
II********enor********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
!!********enor********
catch
cout?"ERROR"?endl;
returnO;
)
37.使用VC++6.。打開考生文件夾下的源程序文件I.cpp,該程序運(yùn)
行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc)r******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
-TC;
);
!1******enor******
TC:TC
(
cout?"Constructor"?",
i=0;
)
1I******error******
TC:display
tout?"i="?i<<","?endl;
II******error******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
38.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程
序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
I********enor********/
staticintn=O:
CO
(
n++:
)
?CO
(
n—:
)
):
I********error********/
intCO::n;
voidmain
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
!********enor********/
eout?C.n?endl;
cout?C0::n?endl;
)
39.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
I!******error******白勺~~F甫*|
試題程序:
#include<iostream>
#include<fstream>
1I********error********
usingstd;
voidWriteFile(char*s)
ofstreamout1;
!1********e]T0j*********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
(
II********ej*ror********
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
1I********error********
cin.getline(str,120);
!1********enor********
while(str)
II********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
cout?str?endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
!********enor********/
TC(inti)
(
m_i=i;
)
voidprint
(
cout?—m_i?,;
)
public:
intm_i;
);
intmain
!********error********/
inti;
TC04(10);
while(i>5)
I********errOr********/
1++:
04.print;
)
cout?endl;
retumO;
)
42.使用VC++6.。打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******的下面。
試題程序:
#include<iostream>
#include<fstream>
II********error********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
1I********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
II***************
outl.puts(s[i]);
)
outl.close;
}
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
)
43.使用VC++6.。打開考生文件夾下的源程序文件1.cppo本程序
要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
II********enor********
cin.getline(str,120);
I!********error********
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
{
retumnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
};
voidmain
{
I!********error********
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
Ii********error*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
45.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
try
(
throw("error");
)
/*1**1**1**!**1*、上*1*7,*1**1**1**1**1*、1,
//個不不不■不平不個errcr個不不不不不不不
catch(chars)
{
cout?s?endl;
)
try
(
throw((int)0);
)
/*1>*1**1**1**1**1*、1,
//不不不不不不不個prrcr不不不不不不不不
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
}
/*1**1**1**1*、卜*1*、,,*1**1^>1*<1**1**1*、!,
//小不不小不下不不ermr不不不不不不不不
catch
(
cout?"ERROR"?endl;
returnO;
五、綜合應(yīng)用題(2題)
46.使用VC++6.。打開考生文件夾下的源程序文件3.cppo類
People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓
名,然后輸出這個姓名到屏幕。
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完
整。
(1)完成類的構(gòu)造函數(shù)功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(2)完成構(gòu)造函數(shù)對姓名的賦值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(3)定義類的友元函數(shù)fun,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
(4)補(bǔ)充函數(shù)fun的年齡比較功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其
他的程序代碼。
試題程序:
#include<iostream.h>
classPeople
(
public:
{
inti;
for(i=0;sUserName[i]!=O;i++)
{m_UserName[i]=sUserName[il;
//********2********
m_Old=nOld;
)
private:
charm_UserName[32];
intm_01d;
);
voidfun(char*s,People&personl,People&person2
{
II********4********
if
{
for(inti=0;personl.m_UserName[i]!=0;i+
+)
(
s[i]=personl.m_UserName[i];
s[i+l]=0;
fdr(inti=O;person2.m_UserName[i]!=0;i+
+)
{s[i]=person2.m_UserName[i];
s[i+l]=0;
)
)
}
voidmain
(
chars[32];
Peoplepl("abc",20);
Peoplep2("def,30):
fun(S,pl,p2);
cout?s?endl:
return;
)
47.請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件
proj3,此工程中包含一個源程序文件proj3.cpp,補(bǔ)充編制C++程序
proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存
放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并
輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。
要求:
補(bǔ)充編制的內(nèi)容寫在“〃***********與“//**********''兩行之間。實(shí)現(xiàn)
將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得
修改程序的其他部分。
注意:程序最后已將結(jié)果輸出到文件Out.dat中,輸出函數(shù)
writeToFile已經(jīng)給出并且調(diào)用。
//proj3.cpp
#include<iostream>
#include<fstream>
#include<catting>
usingnamespacestd;
classdoc
(
private:
char*sir;//文本字符串首地址
intlength;//文本字符個數(shù)
public:
〃構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字
符串首地址
doc(char*filename);
voidreverse;〃將字符序列反轉(zhuǎn)
一doc;
voidwriteToFile(char*filename);
};
doc::doc(char}filename)
(
ifstreammyFile(filename);
intlen=1001,tmp;
atr=newcharflen];
length=0;
while((trap=myFile.get)!=EOF)
strf1ength++]=trap;
str[length]=4\0,;
myFile.close;
)
voiddoc::reverse{
//將數(shù)組atr中的length個字符中的第一個字符與最后一個字符交換,
第二個字符與倒數(shù)第二個
〃字符交換
//*************666*************
doc::?doe
{
delete[]str;
)
voiddoc::writeToFile(char*filename)
(
OfstreamoutFile(filename);
outFile?str;
outFile.close;
)
voidmain
{
docmyDoc(,,in.dat");
myDoc.reveme;
myDoc.writeToFilef'out.dat");
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程testl3_3o此工程包含一個
testl3_.cpp,其中定義了類Vector,但類的定義并不完整。請按要求完成
下列操作,將程序補(bǔ)充完整。
⑴完成構(gòu)造函數(shù)的定義,把數(shù)據(jù)成員size初始化為參數(shù)s的值,數(shù)據(jù)成
員buffer指向動態(tài)申請的int型size大小的空間。請?jiān)谧⑨尅啊?*1**”之
后添加適當(dāng)?shù)恼Z句。
⑵完成拷貝構(gòu)造函數(shù)的定義,注意解決多次刪除的問題。請?jiān)谧⑨?/p>
“〃**2**,,之后添加適當(dāng)?shù)恼Z句。
⑶完成成員函數(shù)elem的定義,該函數(shù)返回buffer的第ndx個元素的值,
注意如果ndx超界,請輸出“errorinindex”。請?jiān)谧⑨尅?/**3**”之后添加
適當(dāng)?shù)恼Z句。
(4)完成析構(gòu)函數(shù)的定義,要求先將字符d打印在屏幕上,再釋放buffer
指向的空間。請?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
123456789101234567891Odd
注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。
源程序文件testl3_3清單如下:
#include<iostream.h>
#include<stdlib.h>
classVector
(
public:
Vector(ints=100);
Vector(Vector&v);
int&elem(intndx);
voiddisplay();
voidset();
?Vector();
protected:
intsize;
int"buffer;
);
Vnector::Vector(ints)
****
u
Vector::Vector(Vector&v)
(
〃**2**
1++
*(buffer+i)=*(v.buffer+i);
)
int&Vector::elem(intndx)
!
〃**3**
cout<<"errorinindex"<<endl;
exit(l);
)
returnbuffer[ndx];
}
voidVector::displayO
(
for(intj=0;j<size;j++)
cout<<elem(i)<<endl;
)
voidVector::set()
(
for(intj=0;i<size;j++)
elem(j)=j+l;
)
Vector::~Vector()
(
〃**4**
voidmain()
(
Vectora(10);
Vectorb(a);
a.set();
b.set();
a.displayO;
b.displayO;
)
49.使用VC6打開考生文件夾下的工程test25_3,此工程包含一個源程
序文件test25_3.cpp,其中定義了用于表示堆的類Set,但它的定義并不完
整。請按要求完成下列操作,將程序補(bǔ)充完整。
(1)完成成員函數(shù)intIsMemberOf(intn)的定義,該函數(shù)檢查參數(shù)n是否
在類的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,反之返回0o請?jiān)谧⑨?/p>
“〃**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成成員函數(shù)intAdd(intn)的定義,如果參數(shù)n包含在類的數(shù)據(jù)成員
數(shù)組elems中則返回1如果數(shù)組超界則返回0,如果都不是,則將參數(shù)
n插入到elems中,下標(biāo)大小為類的數(shù)據(jù)成員PC,之后PC自加一。請?jiān)?/p>
注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成拷貝初始化構(gòu)造函數(shù)Set(Set&s)的定義,請?jiān)谧⑨尅啊?*3***之后
添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:
1
()
{1,2,3,4,5,6,7,8)
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test25_3.cpp清單如下:
#include<iostream.h>
classSet
public:
Set(){PC=O;}
Set(Set&s);
voidEmpty(){PC=O;}
intIsEmptyO{returnPC==O;}
intIsMemberOf(intn);
intAdd(intn);
voidPrint();
private:
intelems[100];
intPC;
);
intSet::IsMemberOf(intn)
〃(**]**
if(elems[i]==n)
return1;
returnO;
)
intSet::Add(intn)
(
〃**2**
return1;
elseif(PC>=100)
returnO;
else
(
elems[PC++]=n;
return1;
)
)
Set::Set(Set&s)
(
〃**3**
for(inti=O;i<PC;i++)
elems[i]=s.elems[i];
)
voidSet::Print()
(
cout<
for(inti=O;i<PC-1;i++)
cout<<elems[i]<<
if(PC>O)
cout<<elems[PC-l];
cout<<"}"<<endl;
)
voidmain()
(
SetA;
cout<<A.IsEmptyO<<endl;
A.Print();
SetB;
for(inti=l;i<=8;i++)
B.Add(i);
B.Print();
參考答案
LA解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只
是根據(jù)功能導(dǎo)出測試用例。注意:白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)
的分析來選取測試用例,白箱測試也稱為邏輯覆蓋測試,故選項(xiàng)B)不正
確;錯誤推測法只是黑箱測試所使用的一種具體的方法,故選項(xiàng)C)不正
確,安裝測試是測試層次中的一種,它屬于高級測試,故選項(xiàng)D)不正確。
注意:常用的黑箱測試方法及其定義,白箱測試用例的準(zhǔn)則。
2.A
3.D解析:C++語言起源于C語言。C++是C語言的超集,即C語言是
C++語言的一個子集,同時C++語言與C語言是兼容的。C++對C語言
作了很多改進(jìn),引進(jìn)了類和對象的概念。
4.C
解析:關(guān)系模型允許定義3類數(shù)據(jù)約束,它們是實(shí)體完整性約束、參
照完整性約束及用戶自定義的完整性約束。其中前兩種完整性約束由
關(guān)系數(shù)據(jù)庫系統(tǒng)支持,對于用戶自定義的完整性約束,則由關(guān)系數(shù)據(jù)
庫系統(tǒng)提供完整性約束語言,用戶利用該語言給出約束條件,運(yùn)行時
由系統(tǒng)自動檢查。
5.C解析:在賦值操作中,將發(fā)生對象的拷貝操作,但并不說明兩者是
完全一樣的.一般情況下,如果紿類定義了賦值操作符,則應(yīng)該同時定
義合適的拷貝構(gòu)造函數(shù),除非系統(tǒng)默認(rèn)生成的拷貝構(gòu)造函數(shù)滿足賦值操
作。實(shí)際上,系統(tǒng)默認(rèn)的拷貝構(gòu)造函數(shù)僅僅將數(shù)據(jù)成員進(jìn)行簡單的對應(yīng)
賦值,而在多數(shù)特殊應(yīng)用中,這么簡單的對應(yīng)關(guān)系是不適用的,這就需
要程序員重新定義拷貝構(gòu)造函數(shù)。
6.C解析:f(2)=f(0)+f(l),所以應(yīng)該執(zhí)行3次。
7.C解析:本題考核函數(shù)的調(diào)用。題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在
C)選項(xiàng)的調(diào)用中,將會把字符型實(shí)參#賦值給整型形參b,這不符合參
數(shù)傳遞規(guī)則。
8.C
(10)0解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集
合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于
用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪
問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分
組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員
(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二
——軟件平臺(軟件)。
9.B解析:循環(huán)鏈表就是將單向鏈表中最后一個結(jié)點(diǎn)的指針指向頭結(jié)點(diǎn),
使整個鏈表構(gòu)成一個環(huán)形,這樣的結(jié)構(gòu)使得從表中的任一結(jié)點(diǎn)出發(fā)都能
訪問到整個鏈表。
10.D解析本題需要考生記憶一些輸入輸出控制操作子,oct為八進(jìn)制,
setfill為設(shè)置填充符,setw為設(shè)置域?qū)挕?/p>
11.D
Do【解析】C語言中規(guī)定,else與離它最近的if相匹配。\r\nx=l,
y=2,z=3,所以第一個if的條件(x>y)不成立,直接執(zhí)行printf("%d\
n",x+1);語句,輸出x的值1,再把x加1。
12.C
Co【解析】本題考查變量的定義。選項(xiàng)A是兩條語句,用分號隔
開,只定義了a為double型;選項(xiàng)B中,不允許這種聲明賦值方式,
語法錯誤;選項(xiàng)D中,類型與變量名之間不加逗號;選項(xiàng)C為正確
的。
13.A在基類中用virtual聲明成員函數(shù)為虛函數(shù),所以A是正確的。純
虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的虛函數(shù)。純虛函數(shù)是一種特
殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)。靜態(tài)數(shù)據(jù)成員函數(shù)只能在類外進(jìn)行初
始化。
14.D解析:靜態(tài)數(shù)據(jù)成員必須在類體外初始化,它是類的所有對象的共
有成員,需要使用類名調(diào)用,靜態(tài)數(shù)據(jù)成員的初始化與權(quán)限控制無關(guān)。
15.C
Co【解析】本題考查類的繼承、類的實(shí)例化和構(gòu)造函數(shù)、析構(gòu)函數(shù)的
調(diào)用方式以及何時調(diào)用。每實(shí)例化一個類就要調(diào)用其構(gòu)造函數(shù),結(jié)束
運(yùn)行該實(shí)例后調(diào)用析構(gòu)函數(shù)。
16.C
首先進(jìn)行括號內(nèi)的運(yùn)算,注意賦值表達(dá)式是從右向左進(jìn)行的。因此,
只要考生細(xì)心運(yùn)算就可以得到正確答案為Co
17.B模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與
其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到
高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有
利于提高模塊的獨(dú)立性,所以A錯誤,B正確。耦合性是模塊間互相連
接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合
的緊密程度,所以C與D錯誤。故答案為B選項(xiàng)。
18.D
19.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動
的,對象間的這種相互合作需要一個機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消
息。消息是一個實(shí)例與另一個實(shí)例之間傳遞的信息,它請求對象執(zhí)行某
一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
20.D
Do【解析】本題考查三目運(yùn)算等。條件表達(dá)式的格式為a?b;c。它
的含義是,當(dāng)a為真時,取b的值,否則取c的值。在C語言程序中
“為真”即“不等于零”,“為假”即等于0。所以和w等價的表達(dá)式是w
非零。
21.C
本題主要考察虛函數(shù)。虛函數(shù)指在某基類中聲明為virtual并在一一個
或多個派生類中被重新定義的成員函數(shù),本題中定義類GA的對象a,
執(zhí)行show(a)、display(a),輸出11,定義了類GB的對象b,執(zhí)行
show(b),仍然輸出1,display(b)執(zhí)行會調(diào)用派生類的f函數(shù),因?yàn)閒函
數(shù)為虛函數(shù),輸出2,所以本題答案為c。
22.B
解析:本題考查的知識點(diǎn)是:構(gòu)造函數(shù)。如果一個類中沒有定義任何
構(gòu)造函數(shù),編譯器將生成一個不帶參數(shù)的公有缺省構(gòu)造函數(shù)。但只要
定義了一個任意的構(gòu)造函數(shù),就不會生成缺省構(gòu)造函數(shù)了。故本題應(yīng)
該選擇Bo
23.B
本題考查的是對構(gòu)造函數(shù)的掌握,另外“++”運(yùn)算符是右結(jié)合的,所以
在進(jìn)行輸出的時候都是先把原來的輸出后再自加1。
24.對象對象解析:在面向?qū)ο蟾拍钪?,所有的同類的?shí)體的抽象就構(gòu)
成一個類,而類被實(shí)例化就形成一個對象。
25.共享性共享性解析數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,
實(shí)現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要
目的。
26.接口接口解析:數(shù)據(jù)以及對數(shù)據(jù)的操作形成對象,對同類對象抽象
出其共性,形成類。類是通過接口與外界發(fā)生關(guān)系的。
27.(*P)
28.友元函數(shù)友元函數(shù)解析:C++語言中友元類中的函數(shù)都是另一個類
的友元函數(shù)。
29.視圖視圖解析:視圖是從一個或多個基本表中導(dǎo)出的虛表,它本身
不存儲數(shù)據(jù)。
30.計(jì)算機(jī)輔助軟件工程(CASE)計(jì)算機(jī)輔助軟件工程(CASE)解析:
CASE將各種軟件工具、開發(fā)機(jī)器和一個存放開發(fā)過程信息的中心數(shù)據(jù)
庫組合起來,形成軟件工程環(huán)境。
31.cout<<end!;cout<<endl;解析:\\n表示換行,end!也可表示換
行。注意:endl和'\\n,可以通用。
32.機(jī)器機(jī)器
33.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言
性注釋通常位于每個程序的開頭部分,給出程序的整體說明,?功能性注
釋的位置一般嵌在源程序體中,主要描述其后的語句或程序做什么。
34.二義性二義性
35.4343解析:分析while循環(huán)體可以判斷出:il用于統(tǒng)計(jì)字符串中字
符a的數(shù)量,i2用于統(tǒng)計(jì)字符b的數(shù)量。因此,考察數(shù)組a的內(nèi)容可得
其數(shù)量分別為4和3。
36.(1)應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”°第2個標(biāo)識前的異常拋出語句為
44throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號"…''表示它可以捕捉任何類型的異常信息,即修
改為“catch(...)"。
37.(1)應(yīng)改為“TC::TC”。
0⑵應(yīng)改為“voidTC::display”。
\n(3)應(yīng)改為“TC::~TC”。
\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名
和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使
用格式為''(類名)::<成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::
TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC=display”后的語句看,這
是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,display
函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display"。由第
3處的語句"(:::丁^可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函
數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加”字符,用
采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。
38.(l)“staticintn=O"應(yīng)改為"staticintn;"。
(2)“intC0::n;”應(yīng)改為“intCO::n=0;
(3)“cout?c.n?endl;"應(yīng)改為"cout?c->n<<endl;"。
【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1
處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時引用c的對
象,應(yīng)改為"cout?c->n?endl;"。
39.(1)應(yīng)改為"usingnamespacestd;"。
\n(2)應(yīng)改為“outl,open('l.txt',ios::binary|ios::app);
\n(3)應(yīng)改為“outl.put(s[i]);
\n【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“outl.open('l.txt',binary|
app)>'語句缺少類ios,即第2處的語句修改為“outl.open('l.txt',ios::
binary|ios::app);第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);”。
40.⑴應(yīng)改為“ein.getline(str,120,?);
\n⑵應(yīng)改為"while(str[i])"°
,,
\n(3)應(yīng)改為"if(str[i]>=a&&str[i]<=2)o
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個
數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);“。第
2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)
束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,
則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是
判斷字符str用是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,
,,
但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)o
41.(1)應(yīng)添加“public:
\n(2)“inti”應(yīng)改為“inti(10);
\n(3)“i++;”應(yīng)改為“i—;
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、
保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類
的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:“,否則該類無法被實(shí)例
化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i
每次減1,在i>5時循環(huán),故i初始化應(yīng)為10o若循環(huán)中i每次增1,則
循環(huán)永遠(yuǎn)不會退出。
42.(1)應(yīng)改為"usingnamespacestd;"。
(2)應(yīng)改為"outl.open("l.txt",ios::binaryIios::app);"。
(3)應(yīng)改為“outl.put(s[i]);
【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open
中,輸入、輸出方式是在ios類中定義的,所以“outl.openC'l.txt",
binaryIapp);”語句缺少類ios,即第2處的語句修改為
“outl.open("l.txt",ios::binaryIios::app);第3個標(biāo)識應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
“outl.put(s[i]);
43.(1)應(yīng)改為“ein.getline(str,120,?);
(2)應(yīng)改為"while(str[i])"°
(3)應(yīng)改為“if(st巾]>=a&&str[i]<=2)>,。
【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符
個數(shù),終止標(biāo)志字符廠,所以第1處改為“cin.getline(str,
120,?);"。第2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一
個字符是否為結(jié)束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否
為小寫,若為小寫,則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”°第3處的
“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
“if(str[i]>=a&&str[i]>=z)”。
44.(1)應(yīng)改為"TCobjl(l);
(2)應(yīng)改為“Objl.SetNumber(lO);
(3)應(yīng)改為“0bj2.SelNumber(lOO);"。
【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個
輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處
的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C+
+中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實(shí)
例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,
這里應(yīng)該使用定義的對象,即。bj2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水井合同范本
- 科技教育助力青少年成長發(fā)展
- 科技產(chǎn)品營銷在電商平臺上的策略探討
- 科技與運(yùn)動結(jié)合打造未來趣味體育課
- 持干股合同范本
- 2025至2030年中國葡甲胺數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國船釣卷線輪數(shù)據(jù)監(jiān)測研究報(bào)告
- 科技企業(yè)面試指南簡歷制作與面試技巧
- 二零二五年度自駕旅游交通工具免責(zé)協(xié)議
- 2025年度智慧物流系統(tǒng)融資合同
- 《氣象學(xué)與氣候?qū)W》全書電子教案B
- 生產(chǎn)設(shè)備更新和技術(shù)改造項(xiàng)目資金申請報(bào)告-超長期國債
- 江西省“振興杯”信息通信網(wǎng)絡(luò)運(yùn)行管理員競賽考試題庫-上(單選題)
- DLT 5756-2017 額定電壓35kV(Um=40.5kV)及以下冷縮式電纜附件安裝規(guī)程
- 循環(huán)伏安法 課件
- 人教版數(shù)學(xué)四年級下冊核心素養(yǎng)目標(biāo)全冊教學(xué)設(shè)計(jì)
- 2023高考數(shù)學(xué)藝考生一輪復(fù)習(xí)講義(學(xué)生版)
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 冀教版五年級數(shù)學(xué)下冊全冊課件【完整版】
- 2023江蘇護(hù)理職業(yè)學(xué)院高職單招語文/數(shù)學(xué)/英語筆試參考題庫含答案解析
- 2024年連云港專業(yè)技術(shù)人員繼續(xù)教育《飲食、運(yùn)動和健康的關(guān)系》92分(試卷)
評論
0/150
提交評論