




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2023年甘肅省隴南市全國計算機等級考試
C++語言程序設(shè)計測試卷(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.語句cout<<setfill("")<<setw(4)<<setfill('i')<<setv^7)<<'m'<
<endl;的輸出結(jié)果為()。
A.iiiimmmmnmmB.iiiimmmmmmC.iiiimmmD.iiiiimm
2.以下不能正確定義二維數(shù)組的選項是()。
A.inta[2][2]={{l},{2}};
B.inta[][2]={l,2,3,4);
C.inta[2][2]={{l},2,3};
D.inta[2][]={{l,2},{3,4});
3.存取指針?biāo)傅闹禃r,采用的運算符是
A.#B.&C.%D.*
4.面向?qū)ο蟪绦蛟O(shè)計將數(shù)據(jù)和()放在一起,作為一個相互依存、不可分
割的整體來處理。
A.對數(shù)據(jù)的操作B.信息C.數(shù)據(jù)隱藏D.數(shù)據(jù)抽象
5.以下程序運行后的輸出結(jié)果是0。#include<iostream.h>voidmain()
{charaft="abbcabbcabbc";inti=O,j=O,k=O;while(a[i]){if(a[i]=='a')j++;
if(a[i]=='b')k++;i++;}cout<<j<<""<<k<<endl;}
A.2,6B.3,5C.4,7D.3,6
6.若有定義:intk,*q;,則下列各選項中賦值表達式正確的是()。
A.q=(&k+1)B.q=&kC.q=kD.*q=&k
7.設(shè)有基類定義:classCbase{private:inta;protected,intb;public:
intc;};派生類采用何種繼承方式可以使成員變量b成為自己的私有成
員()。
A.私有繼承B.保護繼承C.公有繼承D.私有、保護、公有均可
8.在下列程序的橫線處填上適當(dāng)?shù)膬?nèi)容,使程序執(zhí)行后的輸出結(jié)果為
ABCDO#include<iostream>usingnamespacestd;classA{public:
A(){cout<<€A5;}};ClassB:{public:B(){cout<<'B';}};class
C:virtualpublicA{public:C(){cout<<'C';}};classD:p
A.publicAB.privateAC.protectedAD.virtualpublicA
9.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。
A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余
C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致
D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
10.下列不屬于結(jié)構(gòu)化分析的常用工具的是
A.數(shù)據(jù)流圖B.數(shù)據(jù)字典C.判定樹D.PAD圖
二、單選題(13題)
11.有下列程序:
#include<iostream>
#include<cstring>
usingnamespacestd;
classXCD{
char*a;
intb;
public:
XCD(char*aa,intbb){
a=newchar[strlen(aa)+l];
strcpy(a,aa);
b=bb;
)
char*Geta(){returna;}
intGetb(){returnb;}
);
intmain(){
char*pl="abcd",*p2="weirong";
intdl=6,d2=8;
XCDx(pl,dl),y(p2,d2);
cout?strlen(x.Geta())+y.Getb()?endl;
return0;
)
運行時的輸出結(jié)果是O
A.12B.16C.14D.11
12.在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始
化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是()。
A.友元函數(shù)B.虛函數(shù)C.構(gòu)造函數(shù)D.析構(gòu)函數(shù)
13.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
14.下列選項中,不是一個算法的基本特征的是()。
A.完整性B.可行性C有窮性D.擁有足夠的情報
15.下列關(guān)于抽象類的敘述不正確的是()。
A.含有純虛函數(shù)的類稱作抽象類B.抽象類只能是基類C.抽象類不能
被實例化D.純虛函數(shù)可以被繼承
16.若有以下程序:#include<iostream>usingnamespacestd;intf()
{staticinti=0;ints=1;s+=i;i++;returns;}intmain(){inti,a=0;for(i=
0;i<5;i++)a+=f();cout<<a<<endl;return0;}程序運行后,輸出的結(jié)
m日
A.20B.24C.25D.15
17.下列程序段中包含4個函數(shù),其中具有隱含this指針的是
()O
intfunl();
classTest{
public:
intfun2();
friendintfun3();
staticintfun4();
};
A.funlB.fun2C.fun3D.fun4
18.假定MyClass為一個類,則執(zhí)行MyClassa,b(2),*p;語句時,自動
調(diào)用該類構(gòu)造函數(shù)()次。
A.2B.3C.4D.5
19.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。
A.靜態(tài)數(shù)據(jù)成員可以在類體內(nèi)進行初始化
B.靜態(tài)數(shù)據(jù)成員不可以被類的對象調(diào)用
C靜態(tài)數(shù)據(jù)成員不能受private控制符的作用
D.靜態(tài)數(shù)據(jù)成員可以直接用類名調(diào)用
20.有如下的程序:#include<cstring.h)#ingclude<iostream.h)using
namespacestd;ClassMyString{public:MyString(constchar*s);
~MyString(){delete[]data;}protected:unsignedlen;char*data;};
MyString::MyString(constchar*S){1
A.構(gòu)造函數(shù)的實參不允許是本類的對象
B.沒有定義實現(xiàn)深層復(fù)制(深拷貝)的復(fù)制構(gòu)造函數(shù)
C.構(gòu)造對象a時實參與形參類型不符
D.系統(tǒng)不能生成默認的復(fù)制構(gòu)造函數(shù)
21.下列關(guān)于嚴格控制got。語句使用的理解中,錯誤的是()。
A.用一個非結(jié)構(gòu)化的程序設(shè)計語言實現(xiàn)一個結(jié)構(gòu)化的構(gòu)造
B.若不使用goto語句會使功能模糊
C.在某種可以改善而不是損害程序可讀性的情況下
D.goto語句可以完全不用
22.下面程序輸出的結(jié)果為()。
#include"iostream.h"
classA
{public:
A(){cOUt<<"CLASSA"<<end];}
-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
23.對于模板定義關(guān)鍵字class和typename說法不正確的是()。
A.程序中的class并不能都替換為typename
B.class和typename都可互相替換
C.程序中的typename都能替換為class
D.程序中的部分class可以替換為typename
三、2.填空題(12題)
24.程序的測試方法分為靜態(tài)分析和動態(tài)分析。使用測試用例在計算機
上運行程序,使程序在運行過程中暴露錯誤,這種方法稱為【lo
25.根據(jù)下列程序的執(zhí)行結(jié)果,可以斷定劃線部分的修飾符應(yīng)為o
執(zhí)行結(jié)果:
i9afootballiscreated.
afootballiscreated.
i=10
afootballisdestroyed.
afootballiscreated.
i=20
afootballisdestroyed.
afootballisdestroyed.
源程序:
#include<iostream.h>
classFootball
(
public:
Football(){cout<<"afootballiscreated."<<endl;}
?Football(){tout<<"afootballisdestroyed."<<endl;}
};
voidfunc(inti)
{
Footballfl;
Footballf2;
cout<<"i="<<i<<endl;
voidmain()
(
func(10);
func(20);
)
26.函數(shù)中的形參和調(diào)用時的實參都是變量時,參數(shù)傳遞方式為【】。
27.在多繼承中基類和派生類中同時出現(xiàn)存在二義性。
28.在C++中,一個數(shù)組名字實際上是指向該數(shù)組【】的指針。
29.在一個容量為25的循環(huán)隊列中,若頭指針front=15,尾指針rear=6,
則該循環(huán)隊列中共有【】個元素。
30.下列程序的輸出結(jié)果為:
Objectid=0
Objectid=l
請將程序補充完整。
#include<iostream>
usingnamespacestd;
classPoint
(
public:
Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}
-Point(){countP—;}
intGetX(){returnX;}
intGetYO{returnY;}
staticvoidGetCO{cout<<"Objectid="<<countp<<endl;}
private:
intX,Y;
staticintcountP;
);
[]〃靜態(tài)數(shù)據(jù)成員的初始化
intmain()
(
Point::GetC();
PointA(4,5);
A.GetC();
return0;
)
31.分析以下程序執(zhí)行結(jié)果【】。
#include<iostream.h>
intf(intx,inty){
returnx,y;
)
doublef(doublex,doubley){
returnx,y;
)
voidmain(){
inta=4,b=6;
doublec-2.6,d=7.4;
cout<<f(a,b)<<<<f(c,d)<<endl;
)
32.將一個函數(shù)聲明為一個類的友元函數(shù)必須使用關(guān)鍵字【】。
33.派生類中的成員不能直接訪問基類中的____成員。
34.數(shù)據(jù)庫的邏輯模型設(shè)計階段的任務(wù)是將轉(zhuǎn)換成關(guān)系模式。
35.請將下列棧類Stack補充完整。
classStack{
private:
intpList[100];〃int數(shù)組,用于存儲占的元素
inttop;〃棧頂元素(數(shù)組下標(biāo))
public:
Stack():top(0){}
voidPush(constint&item);〃新元素item壓入棧
intPop(void);//將棧頂元素彈出棧
};
voidStack::Push(constint&item){
if(top==99)exit(l);〃如果棧滿,則程序終止
top++;〃棧頂指針增1
intStack::Pop(){
if(top<0)exit(l);//如果??眨瑒t程序終止
returnPlistftop—1;
}
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******自勺卜
試題程序:
#include<iostream>
#include<fstream>
!1********error********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
!1********enor********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
!1********error********
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;
}
37.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
II********error********
cin.getline(str,120);
//********error********
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
cout?str?endl;
return;
)
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
char*sl="abc":
!!********enor********
assert(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
!1********error********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
1I********error********
assert(sizeof(s3)==4);
cout?"sizeof(s3)=l"?endl;
return;
39.使用VC++6.。打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時,默認字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
//********error********
cin.getline(str,120);
II********enor********
while(str)
(
IJ********error*********
if(str[i])=a)
strfi]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
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)
!********errOr********/
i++:
04.print;
)
cout?endl;
retumO;
)
41.使用VC++6.。打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******白勺-|什|~。
試題程序:
#include<iostream>
#include<fstream>
II********enor********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
II********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
(
II********error********
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;
)
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常.,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
)
II********error********
catch(chars)
(
cout?s?endl;
)
try
(
throw((int)0);
)
/I********error********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
II********e口*******
catch
(
cout?"ERROR"?endl;
)
returnO;
)
43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
I********error********/
staticintn=O:
CO
(
n++:
)
?CO
(
n—:
)
):
I********ej*ror********/
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********error********/
eout?C.n?endl;
cout?C0::n?endl;
)
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
TC;
!!******enor******
TC:TC
cout?"Constructor"?","
i=0;
)
II******enor******
TC:display
tout?"i="?i?","?endl;
II******error******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******error******
voidmain
II******enor******
intm=0142:
!!******enor******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
五、綜合應(yīng)用題(2題)
46.(1『while”應(yīng)改為“while(infile.get(ch))”。
(2)應(yīng)添加"bur[len++]=ch;bur[len]=ch;len++;
(3)應(yīng)添力口”0出m62??11也++];”或“outfile2?buf[i];i++;”。
(4)“TCobj;”應(yīng)改為“TCobi("in.txt");”。
【解析】本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個字符,
并判斷是否到文件結(jié)尾,所以應(yīng)使用get函數(shù);第2處應(yīng)將ch存入buf
數(shù)組,同時讓len增1;第3處將buf中的字節(jié)輸出給outfile2,注意同
時讓i增1,否則while循環(huán)將進入死循環(huán),?第4處TC只確一個帶char*
參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對象時必須使用構(gòu)造參數(shù),根據(jù)題意這個參
數(shù)應(yīng)該是“"in.txt"”。
47.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。其中定
義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出
一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及
總個數(shù),同時允許退貨,請按照以下的操作,把類補充完整。
⑴定義類TCFruit的私有靜態(tài)數(shù)據(jù)成員float型變量AllWeight和int型
變量AUN0,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成類TCFruit的帶一個float型變量w的構(gòu)造函數(shù),并把這個w加
到AllWeight中,并且AllNo自加。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)在析構(gòu)函數(shù)中,在AHWeight中減去weight,然后AHNo自減,請
在注釋3后添加適當(dāng)?shù)恼Z句。
⑷完成靜態(tài)成員變量的初始化為0,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其
他的程序代碼。
試題程序:
#include(iostream.h>
classTCFruit
(
private:
floatWeight;
staticintAllNo;
public:
TCFruit(floatw)
(
[I
AllWeight+=w:
AUNo++:
)
?TCFruit
(
AllWeight-Weight:
)
voiddisplay
cout?"SellaFruitwith"?Weight?"k9"<<
endl;
cout<<"Allsellnumber:"?AllNo?endl;
cout?"Allsellweight:"<<AllWeight?"k9"?
endl?endl;
)
};
//********4********
floatTCFruit::AllWeight=O.0;
intmain
{
TCFruitFruitl(l.2);
Fruitl.display;
TCFruitFruit2(2.3);
Fruit2.display;
retumO;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test34_3o此工程包含一個
test34_3.cpp,其中定義了表示棧的類stack。源程序中stack類的定義并
不完整,請按要求完成下列操作,將程序補充完整。
⑴定義類stack的私有數(shù)據(jù)成員sp和size,它們分別為整型的指針和變
量,其中SP指向存放棧的數(shù)據(jù)元素的數(shù)組,size為棧中存放最后一個元
素的下標(biāo)值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。
⑵完成類stack的構(gòu)造函數(shù),該函數(shù)首先從動態(tài)存儲空間分配含有100
個元素的血型數(shù)組,并把該數(shù)組的首元素地址賦給指針sp,然后將該
數(shù)組的所有元素賦值為0,并將size賦值為-l(size等于-1表示棧為空)。
請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
⑶完成類stack的成員函數(shù)push的定義。該函數(shù)將傳入的整型參數(shù)x壓
入棧中,即在size小于數(shù)組的最大下標(biāo)情況下,size自力口1,再給x賦
值。請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成類stack的成員函數(shù)pop的定義,該函數(shù)返回棧頂元素的值,即
在size不等于-1的情況下,返回數(shù)組中下標(biāo)為size的元素的值,并將
size減lo請在注釋“〃**4**”之后添加適當(dāng)?shù)恼Z句。
程序輸出結(jié)果如下:
thetopelem:1
thepopelem:1
thestackisempty
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test34_3.cpp清單如下:
#include<iostream.h>
classstack
{
〃**?**
public:
stack();
boolempty(){returnsize==-l;}
boolfull(){returnsize==99;}
voidpush(intx);
voidpop();
voidtop();
);
stack::stack()
(
〃**2**
for(inti=0;i<100;i++)
*(sp+i)=0;
size=-l;
)
voidstack::push(intx)
(
〃**3**
cout<<"thestackisfull"<<endl;
else
{
size++;
*(sp+size)=x;
)
)
voidstack::pop()
{
〃**4**
cout<<"thestackisempty"<<endl;
else
(
cout<<nthepopelem:n<<*(sp+size)<<endl;
size—;
}
)
voidstack::top()
(
ifiemptyO)
cout<<"thestackisempty"<<endl;
else
cout<<"thetopelem:"<<*(sp+size)<<endl;
voidmain()
(
stacks;
s.push(l);
s.top();
s.popO;
s.top();
)
49.使用VC6打開考生文件夾下的工程test27_3o此工程包含一個
test27_3.cpp,其中定義了類ARRAY,但類的定義并不完整。請按要求
完成下列操作,將程序補充完整。
⑴完成類ARRAY的帶一個參數(shù)的構(gòu)造函數(shù),參數(shù)i為int型,如果i不
是正數(shù)則輸出錯誤信息并退出,否則申請int型的大小為i的空間,然
后把i賦值給類的數(shù)據(jù)成員num。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z
句。
⑵完成類ARRAY的拷貝初始化構(gòu)造函數(shù),注意解決重復(fù)刪除的問題,
請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
⑶完成類ARRAY的重載的運算符函數(shù)口,參數(shù)i為int型,如果i超界
則輸出錯誤信息并退出,否則把下標(biāo)為i的元素返回,請在注釋“〃**3**”
之后添加適當(dāng)?shù)恼Z句。
(4)完成類ARRAY的重載的運算符函數(shù)二,同樣需要注意解決重復(fù)刪除
的問題,不能只是簡單的賦值,請在注釋“〃**4**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test27_3.cpp清單如下;
#include<iostream.h>
#include<stdlib.h>
classARRAY
(
private:
int*p,num;
public:
ARRAY(){p=newint[10],num=10;}
ARRAY(inti)
**
cout<(”錯誤!數(shù)組長度應(yīng)為正。\n”;
exit(0);
}
p=newint[i];
num=i;
)
ARRAY(constARRAY&a);
int&operator[](inti);
-ARRAY(){deletep;}
ARRAY&operator=(constARRAY&a);
friendARRAYoperator+(ARRAY&a,ARRAY&b);
friendostream&operator<<(ostream&os,ARRAY&a);
);
A(RRAY::ARRAY(constARRAY&a)
〃*2**
fbr(inti=0;i<num;i++)
p[i]=a.p[i];
)
int&ARRAY::operator[](inti)
〃**3**
{
cout<<“越界訪問!”;
exit(0);
returnp[i];
ARRAY&ARRAY::operator=(constARRAY&a)
(
num=a.num;
p=newint[num];
for(inti=0;i<num;i++)
p[i]=a.p[i];
〃**4**
)
ARRAYoperator+(ARRAY&a,ARRAY&b)
(
if(a.num!=b.hum)
(
cout<<“數(shù)組長度不相同!”<<endl;
exit(0);
)
ARRAYt(a.num);
for(inti=0;i<a.num;i++)
t.p[i]=a.p[i]+b.p[i];
returnt;
)
ostream&operator?(ostream&os,ARRAY&a)
{
inti=0;
for(;i<a.num;i++)
cout<<a.p[i]<<'
if(!((i+l)%10))cout<<endl;
)
returnos;
)
voidmain()
(
ARRAYa(3);
a[0]=a[l]=a[2]=3;
cout<<'a'<<a<<endl;
ARRAYb(a);
cout<<'b'<<b<<end1;
ARRAYc(2);
c=a+b+b;
cout<<'c'<<c<<endl;
c=((b=(a+b))+c);
cout<<'a'<<a<<'b'<<b<<'c'<<c<<end1;
參考答案
l.A
2.B
3.D解析:對指針?biāo)赶虻牡刂啡≈禃r,采用的存取運算符為*。&為取
地址符。
4.A解析:面向?qū)ο笳Z言包含3個要素,即對象、類和繼承。這3個要
素反映了面向?qū)ο蟮膫鹘y(tǒng)觀念。面向?qū)ο蟪绦蛟O(shè)計的本質(zhì)是把數(shù)據(jù)和對
數(shù)據(jù)的操作當(dāng)成一個整體即對象。
5.D解析:程序中首先定義字符數(shù)組a,然后在while循環(huán)中統(tǒng)計字符a
和b的個數(shù)。其中j記錄a的個數(shù),k記錄b的個數(shù)。第一個if語句是
當(dāng)?shù)趇個字符為a時,i加1;第二個if語句是當(dāng)?shù)趇個字符為b時,k
加1。
6.B解析:本題考核指針的賦值操作。A)選項中,&k表示變量k在內(nèi)
存中的地址,而后面的1是整型常量,所以此選項不正確。C)選項中,
是把整型變量的值直接賦給指針變量q,由于賦值沒有兼容性,所以這
是錯誤的。D)選項中,企圖把k在內(nèi)存中的地址賦給一個整型變量(*q
在此代表一整型變量),這也是不允許的,地址值不能直接轉(zhuǎn)換為一個整
數(shù)。
7.A解析:類的繼承中有三種繼承方式,他們和類的訪問級別相結(jié)合在
派生類中可以產(chǎn)生多種訪問級別?;愔谐蓡T為保護的,在派生類中要
為私有的,可以采用私有繼承。基類中的保護成員在派生類中不是私有
就是保護,即級別只能降低而不能升高?;愔械墓谐蓡T則可能為私
有、保護和私有。
8.D解析:由主函數(shù)main入手,定義了類D對象obj。其中D為類B
和C的公有繼承,A是C的虛基類。題目中要求的輸出結(jié)果為“ABCD”,
依次為類A,類B,類C,類D沖構(gòu)造函數(shù)的輸出語句。為了保證基類
通過多條路徑被派生類“voidprint()const",輸出為print2o
9.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種
用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能
并發(fā)地為多個應(yīng)用服務(wù),同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少
了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在
數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結(jié)構(gòu)化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而
節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,
避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選
項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫
系統(tǒng)的特點,選項D錯誤。本題正確答案是A。
10.D
屬于結(jié)構(gòu)化分析的常用工具數(shù)據(jù)流圖,數(shù)據(jù)字典,判定樹和判定表,
PAD是詳細設(shè)計的工具
11.A
本題主要考查了構(gòu)造函數(shù)。構(gòu)造函數(shù)在對象被創(chuàng)建的時候由系統(tǒng)自動
調(diào)用。在mian()函數(shù)中,語句XCDx(pl,dl),y(p2,d2);\r\n創(chuàng)建了兩個
對象x和y,在創(chuàng)建對象x時系統(tǒng)自動調(diào)用類的構(gòu)造函數(shù),使對象x的
數(shù)據(jù)成員字符指針a指向的內(nèi)存空間的值為字符串"abed”;成員函數(shù)
Geta的功能是獲取數(shù)據(jù)成員a,庫函數(shù)strlen()的功能是獲取字符串的
長度,故strlen(x.Geta())的值為4;在創(chuàng)建對象y時系統(tǒng)自動調(diào)用類的構(gòu)
造函數(shù),使對象y的數(shù)據(jù)成員b的值為8,成員函數(shù)Getb的功能是獲
取數(shù)據(jù)成員b,故y.Getb()的值為8。因此程序運行的輸出結(jié)果是
4+8,即120
12.C
13.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、
判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式
圖)都是詳細設(shè)計的常用工具,不是需求分析的工具。
14.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行
性,即考慮到實際的條件能夠達到一個滿意的結(jié)果;(2)確定性,算法
中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在
有限的時間內(nèi)做完;(4)擁有足夠的情報。
15.B
抽象類是指包含純虛函數(shù)的類,它主要用于基類,給其他派生類提供
參考,由于含純虛函數(shù),故抽象類不能實例化。
16.D解析:本題考核靜態(tài)局部變量在函數(shù)中的使用。靜態(tài)局部變量就是
將局部變量說明為靜態(tài)的。靜態(tài)局部變量既有在局部域作用的特性(即
變量只能在變量的作用范圍內(nèi)被訪問),又可以永久存在(變量的值得以
保留,并可繼續(xù)使用)。靜態(tài)局部變量只在第一次執(zhí)行時初始化一次。在
函數(shù)f中定義了一個靜態(tài)局部變量i,它的初始值為0,還定義了一個局
部變量s(它的初始值為1),用來返回計算所得值。函數(shù)f中所進行的數(shù)
據(jù)加工是s+=i和i++。即每調(diào)用一次函數(shù)f,返回(i+1)的值后,i的值增
lo再看主函數(shù),在主函數(shù)main中,通過一個for語句連續(xù)調(diào)用f函數(shù)
5次,并把每次調(diào)用f函數(shù)的返回值相加并存入ao最后輸出a的值。在
了解各函數(shù)功能以及調(diào)用關(guān)系后就可計算出a的值為15。
17.B
Bo【解析】this指針是成員函數(shù)所屬對象的指針,是指向類對象的地
址,是一個隱含的指針,隱含于每個類的非靜態(tài)成員函數(shù)中。funl是
外部函數(shù),fun3是友元函數(shù),fun4是靜態(tài)成員函數(shù),故選B。
18.A解析:C++在創(chuàng)建一個對象時,會調(diào)用類的構(gòu)造函數(shù)。語句MyClass
ab(2),*p;創(chuàng)建了兩個對象a、b和指針p,在創(chuàng)建對象a和b后會調(diào)用構(gòu)
造函數(shù),而創(chuàng)建指針p時,由于p本身不是對象,所以不調(diào)用類的構(gòu)造
函數(shù)。
19.D解析:靜態(tài)數(shù)據(jù)成員必須在類體外初始化,它是類的所有對象的共
有成員,需要使用類名調(diào)用,靜態(tài)數(shù)據(jù)成員的初始化與權(quán)限控制無關(guān)。
20.B解析:C++語宮中當(dāng)一個新對象被另一個已存在的同類型對象初
始化時要調(diào)用復(fù)制構(gòu)造函數(shù),語句'MyS-trmgb(a),“符合此條件將調(diào)用
類MyString的復(fù)制構(gòu)造函數(shù),但是類MyString沒有定義此復(fù)制構(gòu)造函
數(shù),所以會出錯。
21.D解析:goto語句會造成程序的混亂,但在某些地方goto語句還是
需要的,若不使用got。語句會使功能模糊。
22.C
Co【解析】本題考查類的繼承、類的實例化和構(gòu)造函數(shù)、析構(gòu)函數(shù)的
調(diào)用方式以及何時調(diào)用。每實例化一個類就要調(diào)用其構(gòu)造函數(shù),結(jié)束
運行該實例后調(diào)用析構(gòu)函數(shù)。
23.BB?!窘馕觥吭贑++程序中的typename是都可以替換為class的,
但class不能都替換為typenameo
24.動態(tài)分析動態(tài)分析解析:程序的測試方法分為靜態(tài)分析和動態(tài)分析。
使用測試用例在計算機上運行程序,使程序在運行過程中暴露錯誤,這
種方法稱為動態(tài)分析。
25.staticstatic解析:觀察一下輸出中對象的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行
次數(shù)可以看出,再次進入時某對象沒有被構(gòu)造,亦即該對象在func執(zhí)行
后沒有被銷毀,再次進入時則不需要重構(gòu),可以體現(xiàn)這種功能的標(biāo)識符
只有statico
26.值傳遞方式值傳遞方式
27.同名函數(shù)同名函數(shù)解析:如果一個派生類有多個直接基類,而這些
直接基類又有一個共同的基類,這樣存在的同名函數(shù)無法判斷調(diào)用的確
定性。即存在二義性。
28.首元素首元素解析:在C++中,數(shù)組的名字就是指向該數(shù)組第1個
元素的指針,即該數(shù)組第1個元素的地址,也即數(shù)組的首地址。
29.1616解析:設(shè)循環(huán)隊列的容量為m.
如果rear>front.則循環(huán)隊列中的元素個數(shù)為rear-front;
如果rear<front,則循環(huán)隊列中的元素個數(shù)為m+(rear-front)0
在本題中,front=15,rear=6,即rear<front,因此,循環(huán)隊列中的元素
個數(shù)為
m+(rear-front)=25+(6-15)=16O
3O.intPoint::countP=0;intPoint::countP=0;解析:根據(jù)靜態(tài)數(shù)據(jù)成員
初始化的原則來定義。
31.2419.24
32.A或者friendA或者friend解析:友元的定義。
33.私有私有解析:派生類成員在私有繼承方式下不能訪問基類的所有
成員,在保護繼承方式下不能訪問基類的私有成員,在公有繼承方式下
不能訪問基類的私有成員。
34.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設(shè)計的任務(wù)是將概念模型進一步轉(zhuǎn)
化成相應(yīng)的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯
設(shè)計的主要工作是將E-R圖轉(zhuǎn)換成關(guān)系模式。
35.plist[top]=item
36.(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)準命名空間std,
對于C++中引入標(biāo)準命名空間的格式,缺少namespace,所以第1處
的語句修改為"usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“out1.open是.txt',binary|
app);”語句缺少類ios,即第2處的語句修改為“outl.open(1l.txt',ios::
binary|ios::app);第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);
37.(1)應(yīng)改為"ein.getline(str,120,?);
\n⑵應(yīng)改為"while(str[i])"°
\n(3)應(yīng)改為"if(str[i]>=a&&str[i]<=2)”。
\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&&st巾]>=z)”。
38.(1)應(yīng)改為"assert(sizeof(sl尸=4);
\n(2)應(yīng)改為"assert(sizeof(s2)=lO);
\n(3)應(yīng)改為"assert(sizeof(s3)=l);”。
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。
€tassert(sizeof(s1)=3);”語句中"sizeof(sl尸=3”為假,這會使程序產(chǎn)生異
常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sD==4)二。
str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeof(s2)==10)
charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為
“assert(sizeof(s3)=l);”。
39.⑴應(yīng)改為“ein.getline(str,120,?);”。
(2)應(yīng)改為"while(str[i])”。
(3)應(yīng)改為“if(str[i]>=a&&st巾]<=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(st巾])”。第3處的
“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
,,
“if(str[i]>=a&&str[i]>=z)o
40.(1)應(yīng)添加“public:
\n(2)''inti”應(yīng)改為"inti(10);”。
\n(3)4ti++;”應(yīng)改為“i-;
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、
保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類
的對象被訪問。故應(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)永遠不會退出。
41.(1)應(yīng)改為"usingnamespacestd;"。
(2)應(yīng)改為"outl.open("1.txt",ios::binaryIios::app);
(3)應(yīng)改為“outl.put(s[i]);
【解析】本題第1處的“usingstd;”是在程序中引入標(biāo)準命名空間std,
對于C++中引入標(biāo)準命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open
中,輸入、輸出方式是在ios類中定義的,所以“outl.open("l.txt",
binaryIapp);”語句缺少類ios,即第2處的語句修改為
“outl.open("1.txt",ios::binaryIios::app);第3個標(biāo)識應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
“outl.put(s[i]);
42.(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)識前的異常拋出語句為
“throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號"…''表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
43.(1)“staticintn=O”應(yīng)改為“staticintn;"。
(2)“intC0::n;”應(yīng)改為“intCO::n=0;
(3)€4cout?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;
44.(1)應(yīng)改為“TC::TC”。
⑵應(yīng)改為“voidTC::display”。
(3)應(yīng)改為“TC::?TC",
【解析】在類的外部定義成員函數(shù)時一,必須在成員函數(shù)前面加上類名
和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個
類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改
為“TC::TC”,默認構(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”。
u,,
45.(l)voidmaino
(2)uintm=0144;
(3)“intn=OX25;”或“intn===0x25;
【解析】本題主要考查了主函數(shù)定義及基同進制之間的轉(zhuǎn)換,包括十
進制到八進制,十進制到十六進
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)護理學(xué)(第5版)課件 舌診
- 新能源技術(shù)太陽能光伏發(fā)電系統(tǒng)安裝手冊
- 企業(yè)人際溝通培訓(xùn)
- 雨水收集 規(guī)范
- 項目投資可行性報告報告完整版
- 美麗鄉(xiāng)村項目可行性研究報告
- 家居智能語音
- 農(nóng)業(yè)產(chǎn)業(yè)鏈管理手冊
- 市場調(diào)研報告細分行業(yè)統(tǒng)計表
- 能源產(chǎn)業(yè)項目進度跟蹤表
- 中班安全活動 保護鼻子
- 板卡錯誤代碼對應(yīng)的錯誤信息及解決方案
- 重大事故后果分析
- 武漢理工大學(xué)計算機網(wǎng)絡(luò)試題及答案
- 先學(xué)后教當(dāng)堂訓(xùn)練簡介
- “順豐杯”第三屆全國大學(xué)生物流設(shè)計大賽案例
- 灌區(qū)工程施工方案與技術(shù)措施
- (完整)交叉作業(yè)施工方案
- 幼兒園繪本:《小蛇散步》 課件
- 華中師大版七年級心理 2走近老師 課件(共15張PPT)
- 裝配式建筑疊合板安裝技術(shù)交底
評論
0/150
提交評論