




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年江西省萍鄉(xiāng)市全國計算機(jī)等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、L選擇題(10題)
L軟件結(jié)構(gòu)設(shè)計的圖形工具是()o
A.DFD圖B.結(jié)構(gòu)圖C.PAD圖D.N-S圖
2.設(shè)intb=12表達(dá)式b+=b-=b*b求值后b的值是。
A.552B,264C,144D.-264
3.信息隱蔽的概念與下述哪一種概念直接相關(guān)()。
A.軟件結(jié)構(gòu)定義B.模塊獨立性C.模塊類型劃分D.模塊耦合度
4.下面的程序的結(jié)果是main(){intx=3,y=0,z=0;
if(x=y+z)cout<<"***elsecout<<"###
#";}
A.有語法錯誤不能通過編譯
B.輸出****
C.可以通過編譯,但是不能通過連接,因而不能運行
D.輸出####
5.有如下的對類“X”的說明,其中是錯誤的。classX{
A.inta=10;B.X();public:C.X(intval);D.~X();}
6.類的析構(gòu)函數(shù)的作用是()。
A.一般成員函數(shù)B.創(chuàng)建對象C.初始化對象D.刪除對象
7.決定C++語言中函數(shù)的返回值類型的是()。
A.retum語句中的表達(dá)式類型
B.調(diào)用該函數(shù)時系統(tǒng)隨機(jī)產(chǎn)生的類型
C.調(diào)用該函數(shù)時的主調(diào)用函數(shù)類型
D.在定義該函數(shù)時所指定的數(shù)據(jù)類型
8.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()o
A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI
9.設(shè)有intx=ll;,則表達(dá)式(x++*2/3)的值是
A.7B,8C.11D.12
10.下列對變量的引用中,錯誤的是()。
A.inta;int&p=a;
B.chara;char&p=a;
C.inta;int&p;p=a;
D.floata;float&p=a;
二、單選題(13題)
11.數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各
種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運算,以及()。
A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
12.對于一個類定義,下列敘述中錯誤的是()。
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ù)
13.已知類MyClass聲明如下:
classMyClass{
intn;
public:
MyClass(intk):n(k){}
intgetValue()const{returnn;}
};
在下列數(shù)組定義中正確的是O
A.MyClassxl[2];
B.MyClassx2[2]={newMyClass(l),newMyClass(2)};
C.MyClass*x3[2];""
D.MyClass*x4[2]={MyClass(l),MyClass(2)};
14.下面關(guān)于數(shù)組的初始化正確的是()o
A.charstr[]={,a,,'b',5C5}
B.charstr[2]={'a','b','c'}
C.charstr[2][3]={{'a','b'},{'C','d'},{V,T}}
D.charstr={-a,-b,-C)
15.要利用C++流進(jìn)行文件操作,必須在程序中包含的頭文件是
()。
A.iostreamB.fstreamC.strstreamD.iomanip
16.有如下程序:
ClassBase{public:
intdata;};
ClassDerivedl:publicBase{};
ClassDerived2:protectedBase{};
intmain(){
Derivedldl;Derived2d2;dl.data=O;〃①
d2.data=O;〃②return0;
)
下列關(guān)于程序編譯結(jié)果的描述中,正確的是()。
A.①②皆無編譯錯誤B.①有編譯錯誤,②無編譯錯誤C.①無編譯錯誤,
②有編譯錯誤D.①②皆有編譯錯誤
17.軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分
析、編寫需求規(guī)格說明書以及。
A.階段性報告B.需求評審C.總結(jié)D.都不正確
18.下面程序輸出的結(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
19.設(shè)int&max(int&,int&)返回兩參數(shù)中較大者,如有兩整型變量inta=5;int
b=10;在執(zhí)行max(a,b)++后,a,b的值分別為
A.5,10B,6,10C,5,11D,6.11
20.為了使模塊盡可能地獨立,要求
A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)
B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)
21.設(shè)R是一個2元關(guān)系,S是一個3元關(guān)系,則下列運算中正確的是
()o
A.R-SB.RxSC.RASD.RUS
22.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是
A.10B.8C.6D.4
23.C++語言類體系中,不能被派生類繼承的有()o
A.轉(zhuǎn)換函數(shù)B.構(gòu)造函數(shù)C.虛函數(shù)D.靜態(tài)成員函數(shù)
三、2.填空題(12題)
24.結(jié)構(gòu)化設(shè)計主要分為系統(tǒng)設(shè)計和模塊設(shè)計,【】的任務(wù)是決定系統(tǒng)
的模塊結(jié)構(gòu)。
25.閱讀下面程序:
#include<iostream.h>
voidfunl(chara,charb)
(
charc;
c=a;a=b;b=C;
)
voidfun2(char&a,charb)
(
charc;
c=a;a=b;b=c;
)
voidfun3(char&a,char&b)
(
charc;
c=a;a=b;b=C;
)
voidmain()
(
chara,b;
a='A';b='B';
funl(a,b);cout<<a<<b;
a='A';b='B';
fun2(a,b);cout<<a<<b;
a='A';b='B';
fun3(a,b);cout<<a<<b;
則該程序的輸出為【】。
26.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計中,常用的描述工具是【】。
27.在長度為n的有序線性表中進(jìn)行二分查找,最壞的情況下需要的比
較次數(shù)為【】。
28.下列程序的招待結(jié)果是【]o
#include<iostream,h>
floattemp;
float&fn2(floatr)
(
temp=r*r*3.14;
returntemp;
)
voidmain()
(
floata=fn2(5.0);
float&b=fn2(5.0)
b=20;
cout<<temp<<endl;
29.在擴(kuò)展的E-R模型中;子類【】超類所有的聯(lián)系和屬性。
30.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功
能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計語言寫成
程序。
31.寫出下列程序的運行結(jié)果【】。
#include<iostream.h>.
#include<fstream.h>
#include<stdlib.h>
voidmain()
(
fstreamoutfile,infile;
outfile.open("data.clat",ios::out);
if(!outfile)
(
cout<<"Can'topenthefile."<<endl;
abort();
)
outfile<<"1234567890"<<endl;
outfile<<"aaaaaaaaa"<<endl;
outfile<<”**********"<<endl;
outfile.close();
infile.open("data.dat",ios::in);
if(Jinfile)
(
cout<<"Can'topenthefile."<<endl;
abort();
charline[80];
int1=0;
while(Jinfile.eof())
I++;
infile.getline(line,sizeof(line));
cout<<I<<<<line<<endl;
)
infile.close();
32.main函數(shù)中發(fā)生編譯錯誤的語句是[]o
#include<iostream,h>
classA
(
public:
inta;
constintb:
A():a(10),b(20){
voidfun()const
(
cout<<"a="<<a<<"\tb="<<b<<endl;
voidmain()
Aobj1;
constA*ptr=newA:
ptr=&obj1;
ptr->a=100;
ptr->fun(),
33.下列程序的輸出結(jié)果是【】。
#include<iostream>
usingnamespacestd;
intmain()
intdata=l;
int&r=data;
data+=5;
r+=5;
cout<<data<<endl;
return0;
)
34.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有【】。
35.靜態(tài)成員函數(shù)可以直接訪問類的【】成員,不能直接訪問類的【】
成員。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
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
(
returnnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
voidmain
****************
TCobjl;
objl.Print;
TCobj2(3);
II********ej*j*or********
objl.number=10;
II*************
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
I********ei*ror********/
TC(inti)
(
m_i=i;
)
voidprint
(
cout?—m_i?,;
}
public:
intm_i;
intmain
I********ej*por********I
inti;
TC04(10);
while(i>5)
I********eirOr********I
1++
04.print;
)
cout?endl;
returnO;
38.使用VC++6.。打開考生文件夾下的源程序文件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;
II********epj*or********
cin.getline(str,120);
II********ej*j*or********
while(str)
/I********eppor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
39.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
number=i;
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?"number="?number?endl;
)
private:
intnumber;
);
voidmain
********error********
TCobjl;
objl.Print;
TCobj2(3);
/I********eppor********
objl.number=10;
II********ej*j*0j**^^o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
40.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
public:
/********ej*por********I
staticintn=0:
CO
(
n++:
)
?CO
):
I********enor********I
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
/********epj^0r********I
eout?C.n?endl;
cout?C0::n?endl;
41.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
inti=0;
charstr[120];
cout?"Enterastringendwith?."?endl;
II********ej*j*or********
cin.getline(str,120);
II********eppor********
while(str)
II********epj*or********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
cout?str?endl;
return;
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
******ei^or******
voidmain
//******enor******
intm=0142:
//************
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc*r******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
-TC;
II******ej*por******
TC:TC
cout?"Constructor"?"
i=0;
II******ej*x*or******
TC:display
tout?"i="?i<<","?endl;
II******ej*x*or******
TC:TC
COUI?"Destructor"?endl:
voidmain
TCa;
a.display;
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc>r******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
catch(chars)
(
cout?s?endl;
)
try
(
throw((int)0);
)
//********e
catch
cout?i?endl;
try
throw(O);
throw("error");
/I********eppor********
catch
(
cout?"ERROR"?endl;
)
returnO;
45.使用VC++6.。打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
/I************白勺-?,jo
試題程序:
#include<iostream>
#include<fstream>
/I********ej*por********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
II********epj*or********
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;
五、綜合應(yīng)用題(2題)
46.使用VC++6.。打開源程序文件3.cpp。其中類TC用于把文件
輸出到屏幕,然后進(jìn)行文件的分割。分割的方法如下:第一個文件的
大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)?/p>
in.txt文件中的內(nèi)容輸出到
屏幕,并且將文件按照以上方式分割,存于文件。utl.txt和out2.txt
中。
其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完
整。
⑴從輸入文件中獲得一個字符,并判斷是否到文件結(jié)
尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)把獲得的輸入文件的內(nèi)容存儲到bur中,并且用len
記錄下文件的長度。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請
在注釋3后添加適當(dāng)?shù)恼Z句。
(4)使用文件流對象打開輸入文件in.txt,請在注釋4
后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修
改其他的程序代碼。
試題程序:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h)
classTC
(
public:
TC(char*fileName)
(
len=O;
fstreaminfile;
infile.open(fileName,ios::in)
charch;
while
(
cout?ch;
//********2********
)
infile,close;
)
voidsplit
(
fstreamoutfilel;
fstreamoutfile2;
outfilel.open("outl.txt",ios::out);
outfile2.open("out2.txt",ios::out);
inti=0:
for(i=0;i<len/2;i++)
outfilel?buf[i];
do
//********3********
)
while(i!=len);
outfilel.close;
outfile2.close;
)
prwate:
intlen;
charbuf[1024];
);
voidmain
(
//********4********
TCobj;
obj.split;
return;
)
47.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。其中定
義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。每賣出
一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及
總個數(shù),同時允許退貨,請按照以下的操作,把類補(bǔ)充完整。
⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型
變量A11N0,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加
到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。
⑶在析構(gòu)函數(shù)中,在AllWeight中減去weight,然后AllNo自減,請
在注釋3后添加適當(dāng)?shù)恼Z句。
(4)完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其
他的程序代碼。
試題程序:
#include(iostream.h>
classTCFruit
(
private:
floatWeight;
staticintAHNo;
public:
TCFruit(floatw)
(
//?I>?I>?I>*1**1**1**1**1**1**1^
AllWeight+=w:
AllNo++:
TCFruit
//********3********
A11Weight-=Weight:
)
voiddisplay
(
cout?"SellaFruitwith"?Weight?"k9"<<
endl;
cout?,,Allsellnumber:''?A11No?endl;
cout?"Allsellweight:"?A11Weight?"k9"?
endl?endl;
)
);
II********4********
floatTCFruit::AllWeight=O.0;
intmain
(
TCFruitFruitl(l.2);
Fruitl.display;
TCFruitFruit2(2.3);
Fruit2.display;
returnO;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test21_3,此工程包含一個源程
序文件test21_3.cpp,其中定義了用于表示長方形的類CRectangle,但類
CRectangle的定義并不完整。請按要求完成下列操作,將類CRectangle
的定義補(bǔ)充完整。
⑴定義CRectangle的構(gòu)造函數(shù),函數(shù)含參數(shù)dx,dy,da和db,它們都
是double型的數(shù)據(jù),請將類數(shù)據(jù)成員x,y,a和b初始化,并輸出
“CRectangleConstructed."(另起一行輸出該文字)。請在注釋“〃**1**之后
添加適當(dāng)?shù)恼Z句。
(2)完成類CRectangle的成員函數(shù)getperimeter。的定義,將以a和b為
邊的矩形周長的值返回,請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類CRectangle的成員函數(shù)getarea。的定義將以a和b為邊的矩
形面積的值返回,請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成類CRectangle的友元函數(shù)frienddoubledist(CRectangle&rt)的定
義,先定義兩個double型的臨時變量tx和ty,然后將參數(shù)對象rt的數(shù)
據(jù)成員x與a的一半相加,y與b的一半相加,分別賦值給tx和ty,最
后求出tx與ty的平方和的值之后將它的平方根返回,將請在注釋
“〃**4**,,之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
CRectangleConstructed.
Down_Leftcornerpointis:(100,50)
a=1200,b=700
Perimeterofthisrectangleis:3800
Areaofthisrectangleis:840000
TheDistanceis:806.226
CRectangleConstructed.
Down_Leftcornerpointis:(200,150)
a=2000,b=800
Perimeterofthisrectangleis:5600
Areaofthisrectangleis:1.6e+006
TheDistanceis:1320.04
CRectangleDestructed.
CRectangleDestructed.
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test21_3.cpp清單如下:
#include<iostream.h>
#include<math.h>
classCRectangle
(一
private:
doublex;
doubley;
doublea;
doubleb;
public:
CRectangle()
(-
cout<<"\nCRectangleConstructed."<<endl;
)
CRectangle(doubledx,doubledy,doubleda,doubledb)
(“
〃**]**
a=da;
b=db;
cout<<"\nCRectangleConstructed."<<endl;
CRectangle()
cout<<"CRectangleDestructed."<<endl;
)
voidputxy(doubledx,doubledy){x=dx;y=dy;}
voidputab(doubleda,doubledb)(a=da;b=db;}
doublegetx(){returnx;}
doublegety(){returny;}
doublegeta(){returna;}
doublegetb(){returnb;}
doublegetperimeter()
(-
〃**2**
)
doublegetarea()
(一
〃**3**
)
frienddoubledist(CRectangle&rt);
);
doubledist(CRectangle&rt)
{,
ty=rt.y+rt.b/2.0;
returnsqrt(tx*tx+ty*ty);
)
voidmain()
(
CRectanglerect;
rect.putxy(100.0,50.0);
rect.putab(1200.0,700.0);
cout<<"Down_Leftcornerpointis:("<<rect.getx()<<","<<
rect.gety()<<")"<<endl;
cout<<"a="<<rect.geta()<<",b="<<rect.getb()<<endl;
cout<<"Perimeterofthisrectangleis:"<<rect.getperimeter()<<endl;
cout<<"Areaofthisrectangleis:"<<rect.getarea()<<endl;
cout<<
49.使用VC6打開考生文件夾下的工程testl8_3,此工程包含一個源程
序文件testl8_3.cpp,其中定義了用于表示雇員的類Employee,但類
Employee的定義并不完整。請按要求完成下列操作,將類Employee的
定義補(bǔ)充完整。
(1)補(bǔ)充類Employee的構(gòu)造函數(shù),請使用字符串函數(shù)將數(shù)據(jù)成員name,
address,city,province和zipcode分另初始化為參數(shù)*nm,*addr,*city,
*prov和*zip的值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句;
(2)完成類Employee的成員函數(shù)ChangeName(char*newName)的定義
將newName指向的內(nèi)容賦值給數(shù)據(jù)成員name,請在注釋“〃**2**”之后
添加適當(dāng)?shù)恼Z句;
(3)完成類Employee的成員函數(shù)Display。的定義,先使用指針buffer動
態(tài)申請一個char型的200單位大小的空間,然后使用字符串函數(shù)將數(shù)
據(jù)成員name和address依次復(fù)制其中,最后返回該指針buffer,將請在
注釋“〃**3**,,之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:
王東建國路大街105號
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件testl8_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classEmployee{
protected:
charname[20];
charaddress[100];
charcity[20];
charprovince[20];
charzipcode[10];
public:
Employee(char*nm,char*addr,char*city,char*prov,char*zip);
voidChangeName(char*newName);
char*Display();
};
Employee::Employee(char*nm,char*adr,char*cit,char*prov,char*zip)
(
〃**]**
strcpy(city,cit);
strcpy(province,prov);
strcpy(zipcode,zip);
}.
voidEmployee::ChangeName(char*newName)
{”
〃**2**
)
char*Employee::Display()
{'
〃**3**
strcat(buffer,address);
returnbuffer;
)
voidmain()
(
Employeeemp("李華","建國路大街105號","石家莊“,“河北“,"103400");
emp.ChangeName("王東”);
cout<<emp.Display()<<endl;
)
參考答案
1.BB.【解析】常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖,也稱程序結(jié)構(gòu)圖。
DFD圖(數(shù)據(jù)流圖)是以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動和處理的過
程,只反映系統(tǒng)必須完成的邏輯功能。它是需求分析階段的圖形工具。
盒式圖(N—S圖)和問題分析圖(PAD.是詳細(xì)設(shè)計的常用工具。
2.D
3.B解析:信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不
需要這些信息的其他模塊來說是不能訪問的。模塊獨立性是指每個模塊
只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡
單。衡量軟件的模塊獨立性的度量標(biāo)準(zhǔn)是耦合性和內(nèi)聚性。一個模塊的
耦合性越強(qiáng),則該模塊的模塊獨立性越強(qiáng)。
4.D解析:注意本題本意是考察x==y+z,但是少寫了一個=,因此邏輯
表達(dá)式變成了賦值語句,故x的值為0,即假,因此程序執(zhí)行else部分。
本題答案為D。
5.A
6.D解析:析構(gòu)函數(shù)的作用是刪除對象。
7.D
8.C解析:對二叉樹的前序遍歷是指先訪問根結(jié)點,然后訪問左子樹,
最后訪問右子樹,并且,在訪問左、右子樹時,先訪問根結(jié)點,再依
次訪問其左、右子樹。
9.A解析:當(dāng)自加運算符做后綴表達(dá)式的時候,表達(dá)式的值不變,只有
變量的值增1,所以表達(dá)式(x++*2/3)相當(dāng)于(11*2/3)取整后為7。
10.C解析:本題考核引用的定義和初始化。引用具有如下特點:
①引用能夠使用任何合法變量名。
②引用不是變量,所以必須在定義時初始化,而且一旦初始化之后,
就不能再成為其他變量的引用。
③引用不是值,不占存儲空間,說明引用時,目標(biāo)的存儲狀態(tài)不會改
變。所以,引用只有說明,沒有定義。
④引用僅在說明時帶有“&”,以后就像普通變量一樣使用,不能再帶
在選項C中,由于在定義引用p后沒有進(jìn)行初始化,所以此語句是錯
誤的。故本題答案是C。
1LA解析:數(shù)據(jù)結(jié)構(gòu)作為計算機(jī)的一門學(xué)科,主要研究和討論以下三
個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即
數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進(jìn)行處理時,各數(shù)據(jù)元素在計算機(jī)中的
存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運算。
12.B
本題考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù),如果沒有定義構(gòu)造函數(shù),編譯器
將生成一個缺省的構(gòu)造函數(shù)和一個拷貝構(gòu)造函數(shù),如果已經(jīng)定義了構(gòu)
造函數(shù)和拷貝構(gòu)造函數(shù),編譯器不會生成任何構(gòu)造函數(shù)。如果沒有定
義拷貝構(gòu)造函數(shù),編澤器將生成一個拷貝構(gòu)造函數(shù)。
13.C
本題主要考查了對象數(shù)組、指針數(shù)組和new運算符。new運算符返回
指向指定類型的一個指針。對象數(shù)組是指數(shù)組元素為對象的數(shù)組,該
數(shù)組中的每一個元素都是同一個類的對象。定義對象數(shù)組時,系統(tǒng)將
自動調(diào)用構(gòu)造函數(shù)創(chuàng)建每一個對象元素,因為類MyClass中定義了一
個有一個整型參數(shù)的構(gòu)造函數(shù),編譯器將不再為其生成缺省構(gòu)造函
數(shù),所以定義對象數(shù)組時必須分別調(diào)用有參構(gòu)造函數(shù)為每一個數(shù)組元
素指定初始值。因此選項A錯誤,沒有初始化對象數(shù)組;選項B中,用
指向?qū)ο蟮闹羔槼跏蓟瘜ο髷?shù)組,類型不匹配,因此選項B錯誤;指針
數(shù)組是由指針組成的數(shù)組,即數(shù)組中的每一個元素都是指向同一類型
對象的指針。選項C定義了指向MyClass類對象的指針數(shù)組x3,該定
義語句正確;選項D中,只能用指向MyClass類對象的指針或用已有的
MyClass類對象的地址來初始化指針數(shù)組x4的每一個元素,不能用對
象進(jìn)行初始化,因此選項D錯誤。
14.A
本題考查的是字符數(shù)組的初始化。選項B中用3個底素初始化大小為
2的數(shù)組,越界了;選項c中應(yīng)該是2行3列的數(shù)組,題中使用3行2
列初始化;選項D中數(shù)組合后應(yīng)用方括號。
15.B
解析:iostream通用I/O流類和其他I/O流的基類;fstream類用來對文
件流進(jìn)行操作,fstream類的頭文件是fstream.h:stxstream類同時可以
支持C風(fēng)格的串流的輸入輸出操作iomanip是I/O流控制頭文件,就
像c中的格式化輸出一樣。
16.C
本題考查公用繼承和保護(hù)繼承對基類成員的訪問屬性。在公用繼承
中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問屬性,其私
有成員仍為基類私有、稿.受保護(hù)繼承中,基類的公用成員和保護(hù)成
員在派生類中成了保護(hù)成員,其私有成員仍為基類私有。本題中
Derivedl公用繼承Base.所以①編譯正確,Derived2保護(hù)繼承Base,
所以②編譯不正確。
17.B解析需求分析階段的工作,可以概括為以下4個方面需求獲取、
需求分析、編寫需求規(guī)格說明書和需求評審。本題的正確答案為B。
18.C
Co【解析】本題考查類的繼承、類的實例化和構(gòu)造函數(shù)、析構(gòu)函數(shù)的
調(diào)用方式以及何時調(diào)用。每實例化一個類就要調(diào)用其構(gòu)造函數(shù),結(jié)束
運行該實例后調(diào)用析構(gòu)函數(shù)。
19.C
考點:本題主要考查知識點為引用作為函數(shù)參數(shù)透析:執(zhí)行
max(a,b)++后,函數(shù)返回變量b后加1,即b=ll.因為函數(shù)參數(shù)采用的
引用方式,使用改變的是實參變量b的值。
20.B解析:程序設(shè)計的相關(guān)概念。
21.B解析:關(guān)系的交⑺)、并(U)和差(一)運算要求兩個關(guān)系是同元的,
顯然作為二元的R和三元S只能做笛卡兒積運算。
22.C
根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是
比度為2的結(jié)點多一個。
23.B
Bo【解析】派生類對象的數(shù)據(jù)結(jié)構(gòu)是由基類中說明的數(shù)據(jù)成員和派生
類中說明的數(shù)據(jù)成員共同構(gòu)成,所以不能繼承基類的構(gòu)造函數(shù),必須
重新定義。
24.系統(tǒng)設(shè)計系統(tǒng)設(shè)計解析:結(jié)構(gòu)化設(shè)計主要分為系統(tǒng)設(shè)計和模塊設(shè)計
-系統(tǒng)設(shè)計的任務(wù)是決定系統(tǒng)的模塊結(jié)構(gòu):模塊設(shè)計的任務(wù)是具體考慮
每一個模塊內(nèi)部采用什么算法,模塊的輸入、輸出以及該模塊的功能。
25.ABBBBA
26.E-R圖E-R圖
27.1og2nlog2n解析:在長度為n的有序線性表中進(jìn)行二分查找,最壞的
情況下需要的比較次數(shù)為logzn。
28.2020解析:本題考察全局變量和引用的綜合使用。在主函數(shù)中,b實
際上是temp的一個引用。因此在給b賦值20的時候,輸出的temp就
是20o
29.繼承繼承
30.自頂而下自頂而下
31.1:12345678902:aaaaaaaaa3:**********4:
32.ptr->a=100;ptr->a=100;解析:本題考察的是const的使用。const
修飾的是指針變量的值,及指針本身是可變的,但指針?biāo)笇ο蟮闹凳?/p>
常量,即ptr->a是不能被改變的。
33.11
34.前件前件解析:在樹形結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父
結(jié)點,沒有前件的結(jié)點只有一個,稱為樹的根結(jié)點;每一個結(jié)點可以有
多個后件,它們都稱為該結(jié)點的了結(jié)點。沒有后件的結(jié)點稱為葉子結(jié)點。
35.靜態(tài)非靜態(tài)靜態(tài)\r\n非靜態(tài)解析:靜態(tài)成員函數(shù)可以直接訪問該類
中的靜態(tài)數(shù)據(jù)成員,而不能訪問該類中的非靜態(tài)數(shù)據(jù)成員。
36.⑴應(yīng)改為"TCobjl(l);
\n(2)應(yīng)改為“Objl.SetNumber(lO);”。
\n(3)應(yīng)改為“0bj2.SelNumber(lOO);
\n【解析】本題第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ù),所以修改為
5,
“objl.SetNumber(lO);o類是對象的抽象,而對象是類的具體實例。
第3處"(2.5611^11加61"(10());”語句中的1(2為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2,SetNumber(lOO);
37.⑴應(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:",否則該類無法被實例
化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i
每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則
循環(huán)永遠(yuǎn)不會退出。
38.(1)應(yīng)改為“ein.getline(str,120,?);
(2)應(yīng)改為"while(str[i])”。
(3)應(yīng)改為“if(str[i]>=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用是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
,5
“if(str[i]>=a&&str[i]>=z)e
39.(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);類是對象的抽象,而對象是類的具體實
例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,
這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
40.(l)“staticintn=O"應(yīng)改為"staticintn;"。
(2)“intC0::n;”應(yīng)改為“intCO::n=0;
(3)Mcout?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;"。
41.(1)應(yīng)改為“ein.getline(str,120,?);
W(2)應(yīng)改為"while(str[i])”。
5,
W(3)應(yīng)改為"iRstr[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[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,
但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。
42.(1)“voidmain”。
(2)“intm=0144;”。
(3)“intn=OX25;”或“intn===0x25;”。
【解析】本題主要考查了主函數(shù)定義及幕同進(jìn)制之間的轉(zhuǎn)換,包括十
進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為
“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。
cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)
現(xiàn)變量的初值不正確,十進(jìn)制的100對應(yīng)八進(jìn)制的144,卡進(jìn)制的37
對應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
43.(1)應(yīng)改為“TC::TC”。
3(2)應(yīng)改為"voidTC::display”。
\n(3)應(yīng)改為“TC::~TC”。
\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名
和作用域運算符“二”,作用域運算符用采表示某個成員屬于哪個類,使
用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::
TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC=display”后的語句看,這
是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display
函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC:display"。由第
3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函
數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“?”字符,用
采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::?TC”。
44.⑴應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古代表示年齡的詞語從小到大排序
- 公益慈善存在的問題及建議
- 公共直飲水點管理制度
- 公共交通服務(wù)質(zhì)量評估制度
- 工作票安規(guī)流程
- 工業(yè)產(chǎn)品外觀設(shè)計的基本原則
- 2025年養(yǎng)老保險市場分析:參保人數(shù)穩(wěn)步增長 持續(xù)優(yōu)化服務(wù)保障
- 廣東省茂名市2024-2025學(xué)年高三上學(xué)期第一次綜合測試數(shù)學(xué)試題(解析版)
- 湛江降水井施工方案
- 寧波耐堿磚施工方案
- 山東省淄博市、濱州市2025屆高三一模語文試題及答案解析
- 2025年阜陽職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫有答案
- 手術(shù)十大安全管理目標(biāo)
- 2025年1月時事政治考試100題及參考答案
- 實施“教聯(lián)體”賦能共同體 打造校家社協(xié)同育人新模式
- 六年級下冊快樂讀書吧外國名著閱讀練習(xí)《魯濱遜漂流》《湯姆索亞歷險記》《騎鵝旅行記》答案
- 科技助力野生動植物保護(hù)-創(chuàng)新技術(shù)與方法探討
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫匯編
- 2025年哈爾濱電力職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完整版
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 國家基本藥物臨床應(yīng)用指南
評論
0/150
提交評論