版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年云南省麗江市全國計算機等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.C++語言中,編譯過程后生成的文件類型為()。
A.*.cppB.*.objC.*.hD.*.exe
2.所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于
A.全局變量B.局部變量C.靜態(tài)變量D.寄存器變量
3.有如下程序:#include<iostream>usingnamespacestd;classpoint
{intx,y;public:point(intvx,intvy){x=vx;y=vy;}point(){x=0;y
=0;}pointoperator+(pointpl){pointp;intpx=x+pl.x;intpy=y+pl.y;
returnpoint(px,py);}pointoperator-(pointpl){pointp;intpx=x-pl.x;
intpy=y-ply;returnpoint(px,py);}voidprint(){cout<<x<<","<
<y<<endl;}};intmain(){pointpl(10,10),p2(20,20);pl=pl+p2;
pl.print();return0;}執(zhí)行后的輸出結(jié)果是()。
A.10,10B.20,20C.10,20D.30,30
4.有如下程序:#include<iostream>#include<iomanip>using
nanespacestd;classCSum{intx,y;public:CSum(intx0,inty0):x(x0),y(y0){}
friendostream&operator<<(ostream&os,constCSum&xa){os<<
setw(5)<<xa.x+xa.y;returnos;}};intmain(){CSumy(3,5);cout<<
setfillC*')<<8;cout<<y;return0;}執(zhí)行上面程序的輸出是()。
A.88B.****88c.****8****8D.8****8
5.面關(guān)于類的靜態(tài)成員,說法正確的是o
A?類的靜態(tài)成員函數(shù)只能訪問類的靜態(tài)數(shù)據(jù)成員
B.類的靜態(tài)成員函數(shù)可直接訪問類的所以數(shù)據(jù)成員
C.類的每個對象都有一份自己的靜態(tài)數(shù)據(jù)成員
D.靜態(tài)數(shù)據(jù)成員只能通過“類名::”進(jìn)行訪問
6.若有說明:mt[3][4]={0};則下面敘述正確的()。
A.只有元素s[0]⑼可得到初值。
B.此說明語句不正確
C.數(shù)組s中各個元素都可得到初值,但其值不一定為0
D.數(shù)組s中每個元素均可得到初值0
7.下列選項,不正確的是
A.for(inta=l;a<=10;a++);
B.inta=l;do{a++;}while(a<=10)
C.inta=l;while(a<=10){a++;}
D.for(inta=l;a<=10;a++)a++;
8.設(shè)單鏈表中結(jié)點的結(jié)構(gòu)為(data,link)。已知指針q所指結(jié)點是指針p
所指結(jié)點的直接前驅(qū),若在*q與*p之間插入結(jié)點*s,則應(yīng)執(zhí)行下列哪
一個操作?()o
A.s->link=p->link;p->link=s
B.q->link=s;s->link=p
C.p->link=s->link;s->link=p
D.p->link=s;s->link=q
9.在E-R圖中,用來表示實體的圖形是
A.矩形B.橢圓形C.菱形D.三角形
10.下列選項中,作為是數(shù)據(jù)庫系統(tǒng)的核心的是()。
A.數(shù)據(jù)庫B.數(shù)據(jù)模型C.軟件工具D.數(shù)據(jù)庫管理系統(tǒng)
二、單選題(13題)
11.以下不能正確創(chuàng)建輸出文件對象并使其與磁盤文件相關(guān)聯(lián)的語句是
()o
A.ofstreammyfile;mynle.openf'd:ofile.txf,);
B.ofstream*mynle=newofstream;mynle->opened:Ofile.txt^^);
C.ofstreammyhle("d:ofile.txf,);
D.ofstream*mynle=new("d:ofile.txf,);
(21)以下程序的執(zhí)行結(jié)果是().
#include<iostream.h>
classTestClass2
(
public:
TestClass2(){};
TestCIass2(inti,intj);
voidprintb();
private:
inta,b;
};
classTestClassl
{
public:
TestClass1(){}
TestClassl(inti,intj);
voidprinta();
private:
TestClass2c;
};
TestClass1::TestClassl(inti,intj):c(ij)
()
voidTestClassl::printaQ
(
c.printbO;
)
TestClass2::TestClass2(inti,intj)
(
a=i;
b=j;
}
voidTestClass2::printb()
(
cout?"a="<<a?","?"b="?b?endl;
}
voidmainQr
(
TestClasslm(7,9);
m.printaO;
)
A)a=7.b=8B)a=8,b=7C)a=7,b=9D)a=8,b=9
13.下列說法中不正確的是
A.數(shù)據(jù)庫減少了數(shù)據(jù)冗余B.數(shù)據(jù)庫中的數(shù)據(jù)可以共享C.數(shù)據(jù)庫避免
了一切數(shù)據(jù)的重復(fù)D.數(shù)據(jù)庫具有較高的數(shù)據(jù)獨立性
14.在結(jié)構(gòu)化設(shè)計方法中生成的結(jié)構(gòu)圖(SC)中,帶有箭頭的連線表示
A.模塊之間的調(diào)用關(guān)系B.程序的組成成份C.控制程序的執(zhí)行順序D.
數(shù)據(jù)的流向
15.只能作為成員函數(shù)重載的是
A.=B.++C.*D.new
16.下列各C++程序段中,不包含復(fù)合語句的選項為()。
A.{x=y+z;}
B.for(i=l;k<0;i++)if(i%3==l)cout<<i<<endl;
C.while(i<10){cout<<i<<endl;i++;}
D.if(i<10){i=i+l;}
17.軟件生命周期中的活動不包括()。
A.市場調(diào)研B.需求分析C.軟件測試D.軟件維護(hù)
18.下列哪個是C++語言的有效標(biāo)識符?
A._NolB.No.lC.12345D.int
19.下列關(guān)于繼承方式的描述中,錯誤的是()。
A.如果不顯式地指定繼承方式,默認(rèn)的繼承方式是私有(private)
B.采用公有繼承方式時,基類中的公有成員在派生類中仍然是公有成員
C.采用保護(hù)繼承方式時,基類中的保護(hù)成員在派生類中仍然是保護(hù)成員
D.采用私有繼承方式時,基類中的私有成員在派生類中仍然是私有成員
20.有以下程序段
intk=0;
while(k=l)k++;
while循環(huán)執(zhí)行的次數(shù)是
A.無限次B.有語法錯,不能執(zhí)行C.一次也不執(zhí)行D.執(zhí)行1次
21.有如下函數(shù)模板聲明:template<typenameT>TMax(Ta,T
b){return(a>=b)?a:b;}下列對函數(shù)模板Max()的調(diào)用中錯誤的是()。
A.Max(3.5,4.5)
B.Max(3.5,4)
C.Max<double>(3.5,4.5)
D.Max<double>(3.5,4)
22.類MyClass的定義如下:classMyClass{public:MyClass(){}
MyClass(inti){value=newint(i);}int*value;};若要對value賦值,
則下面語句正確的是()。
A.MyClassmy;my.value=10;
B.MyClassmy;*my;*value=10;
C.MyClassmy;my.*value=10;
D.MyClassmy(10);
23.建立派生類對象時,3種構(gòu)造函數(shù)分別是a(基類的構(gòu)造函數(shù))、b(成員
對象的構(gòu)造函數(shù))、C(派生類)構(gòu)造函數(shù)),這3種構(gòu)造函數(shù)的調(diào)用順序為
()o
A.abCB.aCbC.CabD.Cba
三、2.填空題(12題)
24.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象的外部特征,而不
知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的
25.請按下面注釋的提示,將類B的構(gòu)造函數(shù)定義補充完整。
classA
(
inta;
public:
A(intaa=O)(a=aa;]
);
classB:publicA{
intb;
Ac;
public:
〃用aa初始化基類A,用aa+1初始化類對象成員c
B(intaa):[]{b=aa+2}
);
26.在C++語言中每個類都有一個【】指針,該指針指向正在調(diào)用成員
函數(shù)的對象。
27.閱讀下面程序:
#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;
)
則該程序的輸出為【】。
28.如果表達(dá)式x=y*z中的"”是作為成員函數(shù)重載的運算符,采用運算
符函數(shù)調(diào)用格式,該表達(dá)式還可以表示為【】。
29.在面向?qū)ο蠓椒ㄖ校愔g共享屬性和操作的機制稱為【】。
30.冒泡排序算法在最好的情況下的元素交換次數(shù)為【】。
31.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于結(jié)構(gòu)。
32.下面是一個棧類的模板,其中push函數(shù)將元素i壓入棧頂,pop函
數(shù)彈出棧頂元素。棧初始為空,top值為0,棧項元素在stack[top-l]中,
在下面橫線處填上適當(dāng)語句,完成棧類模板的定義。
template<classT>
classTstack{
enum{size=1000};
Tstack[size];
inttop;
public:
Tstack():top(0){
voidpush(constT&i){
if(top<size)
stack[top++]=i;
)
Tpop(){
if(top==0)exit(1);〃棧空時終止運行
return;
)
);
33.已知:doubleA(doubleA){return++a;}和intA(inta){return++a;)是
一個函數(shù)模板的兩個實例,則該函數(shù)模板定義為【】。
34.有如下類聲明:
classMyClass
(
inti;
private:intj;
protected:intk;
public:intm,n;
};
其中,私有成員的數(shù)量為o
35.以下程序的輸出結(jié)果是【】。
#include<iostream.h>
voidmain()
{inta=0;
a+=(a=8);
cout<<a;
}
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.叩p,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(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":
********error********
asseil(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
!1********enor********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=l0"?endl;
chars3=23:
!1********enor********
assert(sizeof(s3)==4);
cout?"sizeof(s3)=I"?endl;
return;
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
{
public:
I********error********/
staticintn=0:
CO
(
n++:
)
?CO
}:
!********enor********/
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********error********/
eout?C.n?endl;
cout?C0::n?endl;
}
38.使用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;
!1********enor********
cin.getline(str,120);
!1********error********
while(str)
!1********error********
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
)
cout?str?endl;
return;
39.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#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;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(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********error********
cin.getline(str,120);
II********error********
while(str)
{
II********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
cout?str?endl;
return;
)
41.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
)
II********enor********
catch(chars)
(
cout?s?endl;
}
try
throw((int)0);
)
II********enor********
catch
(
cout?i?endl;
}
try
(
throw(O);
throw("error");
)
II********error********
catch
{
cout?"ERROR"?endl;
)
returnO;
)
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******enor******
voidmain
II******error******
intm=0142:
II******enor******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常;輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
try
(
throw("error");
)
I/********enor********
catch(chars)
{
cout?s?endl;
)
try
(
throw((int)0);
)
II********enor********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
II********enor********
catch
(
cout?"ERROR"?endl;
returnO;
)
44.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
I!******error******卜
試題程序:
#include<iostream>
#include<fstream>
!1********enor********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
!1********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);
retumO;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc)r******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
~TC;
};
1I******error******
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;
)
五、綜合應(yīng)用題(2題)
46.使用VC++6.。打開考生文件夾下的源程序文件3.cpp,其中定
義了類A、A1和A2,其中A1類由A類公有派生,A2類由A1類公
有派生。
(1)定義類A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個整型的參數(shù)x,在構(gòu)造函
數(shù)中請將x賦值給數(shù)據(jù)成員a。請在注釋“//********1********”之
后添加適當(dāng)?shù)恼Z句。
(2)定義類A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個整型的參數(shù)x和y,在構(gòu)
造函數(shù)中請將x賦值給數(shù)據(jù)成員b,將y作為基類A構(gòu)造函數(shù)的參數(shù)
值傳人。請在注釋“//********2*********之后添加適當(dāng)?shù)恼Z句。
(3)定義類A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有3個整型的參數(shù)x,y和z,
在構(gòu)造函數(shù)中請將x賦值給數(shù)據(jù)成員C,將y和z分別賦值給基類A1
構(gòu)造函數(shù)的參數(shù)x和y。請在注釋“//********3*********之后添加
適當(dāng)?shù)恼Z句。
(4)完成類A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸
出基類數(shù)據(jù)成員a和b及類A2自身的數(shù)據(jù)成員C的值,上述3個值
在輸出時以空格隔開。請在注釋“//********4*********之后添加適
當(dāng)?shù)恼Z句。
程序輸出結(jié)果如下:
7
3
738
注意:除在指定的位置添加語句之外,請不要改動程序的其他部分。
試題程序:
#include<iostream.h>
classA
inta;
public:
intgeta{returna;}
};
classA1:publicA
(
intb;
public:
/*1**1**1**1**1**1>*1**1*
//"不不本不不不本2""""
intgetb{retumb;}
};
classA2:publicA1
(
intC;
public:
voidshow
(
II********4********
)
};
voidmain
A2a(8.3.7):
cout?a.geta?endl:
cout?a.getb?endl:
a.show;
)
47.
請使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程
prog3,其中聲明了ValArray類,該類在內(nèi)部維護(hù)一個動態(tài)分配的整型
數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實現(xiàn)對象的深層復(fù)制。請編寫
ValArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測試數(shù)據(jù),此
種情況下程序的輸出應(yīng)該是:
ValArrayvl={1,2,3,4,5}ValArrayv2={1,2,3,4,5}要求:
補充編制的內(nèi)容寫在“〃*********333**********與
“〃*********666**********之間,不得修改程序的其他部分。
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。
//ValArray.h
#include<iostream>usingnamespacestd;classValArray{
int*v:intsize;public:
VaiArray(constint*P,intn):size(n){
v=newintfsize];
for(inti=0;i<size;i++)v[i]=P[i];
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test24_3,此工程包含一個源程
序文件test24_3.cpp,其中定義了抽象類point和它的派生類line,但它們
的定義并不完整。請按要求完成下列操作,將程序補充完整。
⑴定義類point的構(gòu)造函數(shù),函數(shù)含參數(shù)i和j它們都是int型數(shù)據(jù),默
認(rèn)值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。請在注
釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。
(2)完成類point的成員函數(shù)純虛函數(shù)voidset()和voiddraw。的定義,請
在注釋“〃**2**,,之后添加適當(dāng)?shù)恼Z句。
⑶添加類line的構(gòu)造函數(shù),函數(shù)含參數(shù)i,j,m和n,它們都是int型數(shù)
據(jù),默認(rèn)值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。
請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:
line::set()called.
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test24_3.cpp清單如下:
#include<iostream.h>
classpoint
(
public:
〃**]**
〃**2**
protected:
intxO,yO;
classline:publicpoint
(
public:
(
xl=m;
yl=n;
)
voidset(){cout<<"line::set()called.\n";}
voiddraw(){cout<<"line::draw()called.\n";}
protected:
intxl,y1;
);
voidmain()
(
line*lineobj=newline;
lineobj->set();
)
49.使用VC6打開考生文件夾下的工程MyProjl3。此工程包含一個源程
序文件MyMainl2.cpp。程序中定義了兩個類Base和Derived,但類的
定義并不完整。
請按要求完成下列操作,將類的定義補充完成:
①定義類shapes的保護(hù)成員x和y,它們都是整型變量。請在注釋“//*
*1**"之后添加適當(dāng)?shù)恼Z句。
②完成構(gòu)造函數(shù)shapes(intd,intw)定義,使類shapes的保護(hù)成員x、y分
別初始化為d、w,并分別具有默認(rèn)值0、0。請在注釋“//**2**”之后添
加適當(dāng)?shù)恼Z句。
③完成類shapes的成員函數(shù)setvalue(intd,intw)的定義,sh叩es類的數(shù)
據(jù)成員x和y分別被設(shè)置成d和w。請在注釋“//**3**”之后添加適當(dāng)
的語句。
④將類shapes的成員函數(shù)voiddisp()設(shè)置成純虛函數(shù)。請在注釋“//**4*
*''之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件MyMainl3.cpp清單如下:
//MyMainl3.cpp
#include<iostream>
usingnamespacestd;
classshapes
/******
/1
public:
〃***2***
voidsetvalue(intd,intw)
{
〃***3***
)
〃***4***
classsquare:publicShapes
(
public:
voiddisp()
(
cout<<x*y<<end!;
)
};
intmain()
(
shapes*ptr;
squares1;
ptr=&sl;
ptr->setvalue(10,5);
ptr->disp();
return0;
}
參考答案
l.B
2.B解析C++語言函數(shù)中定義的變量都是屬于這個函數(shù)的局部變量。
3.D解析:本題主要考察C++中運算符重載的機制與實現(xiàn)。運算符重載
函數(shù)一般分為成員函數(shù)形式和友元函數(shù)形式,這兩種形式都可以訪問類
中的私有成員。本題中的運算符重載形式為成員函數(shù)形式。程序在類
point中聲明了私有數(shù)據(jù)成員intx和inty,并定義了兩種形式的構(gòu)造函
數(shù)以完成對對象的初始化:之后,程序?qū)\算符進(jìn)行了重載,令其輸
入?yún)?shù)為類point的對象,輸出為操作符“+”右側(cè)該對象的私有數(shù)據(jù)成
員x和y與操作符“+”左側(cè)同類型對象的私有數(shù)據(jù)成員x和y的兩數(shù)之
和;print。函數(shù)則輸出對象中數(shù)據(jù)成員的值。主函數(shù)中,實例化了類point
的兩個對象pl和p2,并完成對對象的初始化。在語句"pl=pl+p2;”中,
由于操作符左右兩端的操作數(shù)為point類的對象,復(fù)合類point定義
中的操作符的重載函數(shù),因此程序?qū)⒄{(diào)用重載后的操作符函數(shù),并
返回兩point對象數(shù)據(jù)成員的加和值,覆蓋對象pl的數(shù)據(jù)成員。因此
print。函數(shù)輸出對象pl的數(shù)據(jù)成員值應(yīng)該為x=10+20=30,y=10+20=30。
4.D
5.A
6.D
7.C解析在進(jìn)入最后一次循環(huán)時a=10,在循環(huán)體內(nèi)執(zhí)行“a++丁后a=U,
執(zhí)行完該次循環(huán)體計算for循環(huán)的增量部分后a=12小于10,循環(huán)結(jié)束。
8.B解析:由于指針q所指結(jié)點是指針p所指結(jié)點的直接前驅(qū),若在*q
與*p之間插入結(jié)點*s,首先將q指向s,再將s指向p,即插入了結(jié)點
So
9.A
解析:在E-R圖中,用三種圖框分別表示實體、屬性和實體之間的聯(lián)
系,其規(guī)定如下:用矩形框表示實體,框內(nèi)標(biāo)明實體名;用橢圓狀框
表示實體的屬性,框內(nèi)標(biāo)明屬性名;用菱形框表示實體間的聯(lián)系,框
內(nèi)標(biāo)明聯(lián)系名。所以,選項A正確。
10.D解析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS是負(fù)
責(zé)數(shù)據(jù)庫的建立、使用和維護(hù)的軟件。DBMS建立在操作系統(tǒng)之上,實
施對數(shù)據(jù)庫的統(tǒng)一管理和控制。
11.D解析:本題考查文件對象的創(chuàng)建方法??梢灾苯佣x文件對象,
也可以用new來動態(tài)生成。很明顯,選項D中使用new的方式是錯誤
的。
12.C(21)C)【解析】由主函數(shù)mam入手,定義了TestClassl\r\n\r\n的對
象m,其中參數(shù)為7和9。"m.printa。;"中TestClassl中printa\r\n\r\n為
“c.printb。;”,其中c為TestClass2的對象,所以printb為TestClass2\r\n\r\n
中的“void\r\nTestClass2::printb()',即輸出為“a=7,b=9”。
13.C解析:數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:數(shù)據(jù)的集成性、數(shù)據(jù)的高共
享性與低冗余性、數(shù)據(jù)的獨立性、數(shù)據(jù)統(tǒng)一管理與控制。
14.A解析:在結(jié)構(gòu)圖中,用帶有箭頭的連線表示模塊之間的調(diào)用關(guān)系。
箭頭由前一個模塊指向后一個模塊,表示前一個模塊調(diào)用后一個模塊。
本題的正確答案為A。
15.A解析:運算符重載為成員函數(shù)的形式為:函數(shù)類型operator運算符
(形參表){函數(shù)體;};運算符重載為友元函數(shù)的形式為:friend函數(shù)類型
operator運算符(形參表){函數(shù)體;一般來講,單目運算符最好重載為
成員函數(shù),雙目運算符最好重載為友元函數(shù)。=、口、()、->以及所有的
類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載。
16.B
17.A軟件的生命周期描述了軟件從產(chǎn)生到最終消亡的全過程,生命周期
中的活動包括需求分析、軟件設(shè)計(分為概要設(shè)計和詳細(xì)設(shè)計)、軟件實
現(xiàn)、軟件測試和軟件維護(hù),不包括市場調(diào)研。
18.A解析:標(biāo)識符是一個以字母或下劃線開始的,由字母、下劃線和數(shù)
字組成的字符串,標(biāo)識符不能與任意關(guān)鍵字同名。
19.D
Do【解析】采用私有繼承方式對。基類中私有成員在派生類中是不可
訪問的成員。
20.A解析:注意本題有個陷阱,馬虎的考生將紛紛落馬。本來、while中
的表達(dá)式應(yīng)為k==l,而本題卻為k=l,是賦值表達(dá)式而不是邏輯表達(dá)
式。因此,編譯器將其值一直認(rèn)為是1,因此表達(dá)式一直為真,陷入無
限次的循環(huán)。
2LB解析:本題考核函數(shù)模板的使用。引用模板函數(shù)和引用一般的函數(shù)
在語法形式上沒有任何區(qū)別。所有的類型替換都是編譯器在幕后悄悄進(jìn)
行的。但是要注意的是說明一個函數(shù)模板后,當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個對
應(yīng)的函數(shù)調(diào)用時,將根據(jù)實參中的類型來確認(rèn)是否匹配函數(shù)模板中對應(yīng)
的形參。例如,本題中的B)選項,編譯系統(tǒng)從第一個參數(shù)“3.5”獲得的
信息是“T對應(yīng)于double",而從第二個參數(shù)“4”處獲得的信息是“T對應(yīng)
于int”,二者相互矛盾,在編譯時會產(chǎn)生錯誤。對于D)選項中緊跟在
函數(shù)名后的<double>就是模板實參表,通過它通知編譯系統(tǒng)在調(diào)用過
程中,int型的參數(shù)“4”將被自動換成double型。
22.D
23.A
本題考查的是在繼承中派生類的對象調(diào)用構(gòu)造函數(shù)的順序,應(yīng)該是先
調(diào)用基類的構(gòu)造函數(shù),然后是成員中的對象對應(yīng)類的構(gòu)造函數(shù),最后
是派生類自己的構(gòu)造函數(shù)。
24.封裝性封裝性解析:對象具有下列5個基本特點:①標(biāo)識唯一性;
②分類性:③多態(tài)性:④封裝性;⑤模塊獨立性好。其中,封裝性是指
從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行
和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。
25.A(aa)c(aa+l)或c(aa+1)A(aa)A(aa),c(aa+l)或c(aa+l),A(aa)
26.this
27.ABBBBA
28.x=y.operator*⑵
29.繼承繼承解析:類是面向?qū)ο笳Z言中必備的程序語言結(jié)構(gòu),用來實
現(xiàn)抽象數(shù)據(jù)類型。類與類之間的繼承關(guān)系實現(xiàn)了類之間的共享屬性和操
作,一個類可以在另一個已定義的類的基礎(chǔ)上定義,這樣使該類型繼承
了其超類的屬性和方法,當(dāng)然,也可以定義自己的屬性和方法。
30.00解析:冒泡排序算法在最好的情況下(已經(jīng)有序的)元素交換次數(shù)
為0。
31.存儲存儲解析:數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)和物理結(jié)構(gòu)(存儲結(jié)構(gòu)),邏輯
結(jié)構(gòu)包括集合、線性、樹、網(wǎng)絡(luò)等,而存儲結(jié)構(gòu)主要指的是邏輯結(jié)構(gòu)的
存儲,包括順序、鏈表、索引、散列等。
32.stack[--top]或stack[top-=l]或stack[top=top-1]stack[—top]^stack[top-
=1]或stack[top=top-l]解析:此題考查的是堆棧數(shù)據(jù)結(jié)構(gòu)。分析題目,
首先利用函數(shù)voidpush(constT&i)將i壓入棧,然后Tpop()將元素彈出,
但由于在壓入棧時,top值已經(jīng)增加1;要彈出元素,須使top先減1,
才能把棧頂元素彈出。故正確答案為stack[-top]o
33.template<typenameT>TA(Ta){returna++;)
34.2
35.1616解析:解答本題的關(guān)鍵是要分析清楚表達(dá)式a+=(a=8)中,a的
值已經(jīng)被賦為8,而不是0。
36.⑴應(yīng)改為"assert(sizeof(sl)==4);
\n⑵應(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)生中斷異常。
t4assert(sizeof(sl)=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,所以修改為
€tassert(sizeof(s3)=1);”。
37.(1)“staticintn=O"應(yīng)改為"staticintn;"。
(2)“intCO::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;
38.(1)應(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
39.(1)應(yīng)改為叮(2::TC”。
⑵應(yīng)改為“voidTC::display”。
(3)應(yīng)改為“TC::?TC”。
【解析】在類的外部定義成員函數(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”。
40.(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(st巾])”。第3處的
“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
,,
“if(str[i]>=a&&str[i]>=z)o
41.(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(…)”。
42.(l)“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)分另IJ改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
43.(1)應(yīng)改為“catch(char*s)"°
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(...)"。
【解析】本題中第1個標(biāo)識前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對應(yīng)的異常捕捉
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年采購合同:電子產(chǎn)品批量采購及技術(shù)支持
- 2024版特種物品運輸協(xié)議3篇
- 2024年版企業(yè)租車服務(wù)協(xié)議規(guī)范化文件版B版
- 2024慶陽房屋租賃及租后維護(hù)服務(wù)合同3篇
- 2024年私募股權(quán)投資基金投融資合作協(xié)議3篇
- 2024年美甲行業(yè)勞動合同樣本
- 2024年度藝術(shù)品寄賣代理委托協(xié)議(含投資咨詢)3篇
- 2024年版建筑總承包協(xié)議解除條款明細(xì)一
- 2024年綿陽地區(qū)標(biāo)準(zhǔn)房屋租賃協(xié)議格式版B版
- 2025年度智能家居產(chǎn)品形象拍攝合作協(xié)議3篇
- 常見酸和堿說課課件
- 2023-2024學(xué)年湖北省利川市小學(xué)語文六年級期末通關(guān)測試題詳細(xì)參考答案解析
- 礦大畢業(yè)設(shè)計-固定式帶式輸送機設(shè)計
- 高考地理一輪復(fù)習(xí)課件+湖泊的水文特征
- 熱動復(fù)習(xí)題材料熱力學(xué)與動力學(xué)
- GB/T 19405.1-2003表面安裝技術(shù)第1部分:表面安裝元器件(SMDS)規(guī)范的標(biāo)準(zhǔn)方法
- GB/T 13275-1991一般用途離心通風(fēng)機技術(shù)條件
- 彈塑性力學(xué)(浙江大學(xué)課件)
- 千年菩提路解說詞
- 濰柴天然氣發(fā)動機維修手冊
- 配氣機構(gòu)的設(shè)計
評論
0/150
提交評論