版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年山西省呂梁市全國計算機(jī)等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為
()o
A.125B.n/2C.nD.n+1
2.下列對于虛函數(shù)和重載函數(shù)的敘述,正確的是()。
A.虛函數(shù)要求函數(shù)名、返回值類型和參數(shù)序列完全相同
B.重載函數(shù)要求函數(shù)有相同的返回值類型和函數(shù)名稱,并有不同的參數(shù)
序列
C.虛函數(shù)是根據(jù)對象的不同去調(diào)用不同類的虛函數(shù)
D.虛函數(shù)和重載函數(shù)都是在運行時表現(xiàn)出多態(tài)功能
3.下列不是數(shù)據(jù)字典通常包括的內(nèi)容的是()o
A.數(shù)據(jù)項B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.數(shù)據(jù)元素
4.結(jié)構(gòu)化程序設(shè)計所規(guī)定的三種基本控制結(jié)構(gòu)是()。
A.for、while,swishB輸入、輸出、處理C.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)
結(jié)構(gòu)D.主程序、子程序、函數(shù)
5.下列關(guān)于靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。
A.靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)
B.類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員
C.類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值
D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用
6.
有如下函數(shù)模板聲明:template<typenameT>TMax(Ta,TB){return(a>=B)?a:b;}下列對函
數(shù)模板Max的調(diào)用中錯誤的是
A)Max(3.5,4.5)
B)Max(3.5,4);
0Max<double>(3.5,4.5)
D)Max<double>(3.5,4)
7.若類A和類B的定義如下:classA{inti,j;public:intgeti(){return
i;}};classB:publicA{intk;public:voidmake(){k=i*j;}};
則上述定義中非法的表達(dá)式是()。
A.k=i*jB.intk;C.retumi;D.voidmake()
8.下列敘述中正確的是
A.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)必定是一一對應(yīng)的
B.由于計算機(jī)的存儲空間是向量式的存儲結(jié)構(gòu),因此,數(shù)據(jù)的存儲結(jié)構(gòu)
一定是線性結(jié)構(gòu)
C.程序設(shè)計語言中的數(shù)組一般是順序存儲結(jié)構(gòu),因此,利用數(shù)組只能處
理線性結(jié)構(gòu)
D.以上3種說法都不對
9.為了使模塊盡可能地獨立,要求o
A.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量強(qiáng)
B.模塊的內(nèi)聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D.模塊的內(nèi)聚程度要盡量低,且各模塊間的耦合程度要盡量強(qiáng)
10.下面內(nèi)容不屬于使用軟件危機(jī)的是()。
A.軟件質(zhì)量難以保證B.軟件的成本不斷提高C.軟件需求增長緩慢D.
軟件不可維護(hù)或維護(hù)程度非常低
二、單選題(13題)
11.有如下程序#include<iostream>#include<iomanip>using
namespacestd;classMyClass{public:MyClass(){cout<<
'A';}MyClass(charc){cout<<c;}~MyClass(){cout<<'B';}};intmain()
{MyClasspl,*p2;p2=newMyClass('X');deletep2;return0;}執(zhí)行這個程序
屏幕上將顯示輸出()。
A.ABXB.ABXBC.AXBD.AXBB
12.結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是()。
A.過程、子程序和分程序B.順序、選擇和重復(fù)C.遞歸、堆棧和隊列D.
調(diào)用、返回和轉(zhuǎn)移
13.有以下程序:classDate{public:Date(inty,intm,intd);{year=y;
month=m;day=d;}Date(inty=2000){year=y;month=10;day=1;}
Date(Date&d){year=d.year;month=d.month;day=d.day;}voidprint()
{cout<<year<<<<month<<<<day<<endl;}private:int
year,month,day;};Datefun(Dated){Datetemp;temp=d;resurntemp;}
intmain(){Datedatel(2000,l,l),date2(0,0,0);Datedate3(datel);date2=
fun(date3);return0;)程序執(zhí)行時,Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次
數(shù)是
A.2B.3C.4D.5
14.下列關(guān)于棧的敘述正確的是()。
A.棧頂元素最先被刪除B.棧頂元素最后才能被刪除C.棧底元素永遠(yuǎn)
不能被刪除D.以上三種說法都不對
15.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定
的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是
()o
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
16.下列程序輸出的結(jié)果是()。#include<stdio.h>subl(chara,charb)
{charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}
sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;
a='A';b='B';subl(a,b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);putchar(b);
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);putchar('\n');}
A.BABBABB.ABBBBAC.ABBABAD.ABABBA
17.下列運算符中,在C++語言中不能重載的是()。
A.*B.>=C.::D./
18.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次
數(shù)為()o
A.log2nB.n/2C.nD.n+1
19.有如下類定義:
classXX{
intXX;
public:
xx():xx(0){tout?A;}
XX(intn):xx(n){cout?B;}
};
classY:Y:publicXX{
intYY;
public:
YY():YV(O){cout?YY;)
YY(intn):xx(n+l),YY(n){cout?YY;}
YY(intm,intn):XX(m),YY(n){cout?yy;)
};
下列選項中,輸出結(jié)果為AO的語句是
A.YYyl(O,0);B.YY72(1);C.YYy3(0);D.YYy4;
20.下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()
A.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)
B.構(gòu)造函數(shù)在定義類對象時自動執(zhí)行
C.構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)
D.構(gòu)造函數(shù)不可以重載
21.下列敘述中,不屬于測試的特征的是()o
A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)
濟(jì)性
22.已知chara;intb;floatC;doubled;則表達(dá)式a*b+c-d的結(jié)果為()。
A.doubleB.intC.floatD.char
23.C++語言是以哪種語言為基礎(chǔ)逐漸發(fā)展演變而成的一種程序設(shè)計語
言
A.ASPB.CC.VBD.Java
三、2.填空題(12題)
24.如果一個類中含有純虛函數(shù),則該類稱為【】。
25.數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變
時,其邏輯結(jié)構(gòu)可以不變,所以,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,
稱為【】。
26.不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是____o
27.在面向?qū)ο蟮脑O(shè)計中,用來請求對象執(zhí)行某一處理或回答某些信息
的要求稱為【】。
28.數(shù)據(jù)模型分為格式化模型和非格式化模型,則關(guān)系模型屬于【】
模型。
29.在下面程序的橫線處填上適當(dāng)?shù)恼Z句,使該程序的輸出為12。
#include<iostream>
usingnamespacestd;
classBase
(
public:
inta;
Base(inti){a=i;}
classDerived:publicBase
(
inta;
public:
Derived(intx):Base(x),b(x+1){}
voidshow()
{
;〃輸出基類數(shù)據(jù)成員a的值
cout<<b<<endl;
)
);
intmain()
(
Derivedd(l);
d.show();
return0;
30.若a=12,b=14,c=0,則表達(dá)式“((y=(a>B)?a:B)>C)?y:c”的值為
【】。
31.結(jié)構(gòu)化程序設(shè)計的一種基本方法是【】法。
32.含有純虛函數(shù)的類稱為o
33.下面程序編譯時發(fā)現(xiàn)ma[3]=9錯誤,其原因是____。
#include<iostream.h>
classFunArray
(
int*pa;//指向一個數(shù)組空間
intsize;//數(shù)組元素個數(shù)
public:
FunArray(inta[],intthesize):pa(a),size(thesize){}
intSize(){returnsize;}
)
);
voidmain()
{
ints[]={3,7,2,l,5,4);
FunArrayma(s,sizeof(s)/sizeof(int));
ma[3]=9;
cout<<ma[3]<<endl;
)
34.在C++語言中每個類都有一個【】指針,該指針指向正在調(diào)用成員
函數(shù)的對象。
35.所有的函數(shù)模板定義都是以關(guān)鍵字template開始的,在template之
后使用【】括起來的形參表。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
?TC;
};
II******error******
TC:TC
{
cout?"Constructor"?",";
i=0;
)
I/******ej*j*or******
TC:display
(
tout?"i="?i<<","?endl;
)
/!******error******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
37.使用VC++6.。打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******-"jo
試題程序:
#include<iostream>
#include<fstream>
********eiror********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
II********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
1I********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;
)
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行有問題,請改正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
!1********error********
TCobjl;
objl.Print;
TCobj2(3);
!I********error********
objl.number=10;
II********ej*j*or*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
39.使用VC++6.0打開考生文件夾下的源程序文件1.叩p,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
I********enor*****
staticintn=O:
CO
(
n++:
)
?CO
):
I********error********
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********error********
eout?C.n?endl;
cout?C0::n?endl;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc)r******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
{
inti;
public:
TC;
voiddisplay;
-TC;
};
II******enor******
TC:TC
{
cout?"Constructor"?",";
i=0;
)
//******error******
TC:display
tout?"i="?i<<","?endl;
1I******error******
TC:TC
{
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
41.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******enor******
voidmain
{
!!******error******
intm=0142:
I/******ej*j*or******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
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
II********error********
TCobjl;
objl.Print;
TCobj2(3);
II********enor********
objl.number=10;
I/********en*or*%o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
!********error********/
TC(inti)
(
m_i=i;
)
voidprint
{
cout?~m_i?,;
)
public:
intm_i;
};
intmain
I********error********/
inti;
TC04(10);
while(i>5)
!********errOr********/
1++:
04.print;
)
cout?endl;
retumO;
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
)
I!********error********
catch(chars)
(
cout?s?endl;
)
try
(
throw((int)0);
)
/I********error****"
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
I!********enor****"
catch
(
cout?"ERROR"?endl;
)
retumO;
45.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
I!******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++)
(
II********error********
outl.puts(s[il);
)
outl.close;
)
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
)
五、綜合應(yīng)用題(2題)
46.⑴應(yīng)添加“BA(intm){a=m;}“。
⑵應(yīng)添力口“PAl(intm,intn):BA(n){b=m;}”。
(3)應(yīng)添力II“PA2(intm,intn,intk):PAl(n,k){C=m;)”。
(4)應(yīng)添力口"cout<<geta<<""<<getb<<""<<C<<endl;
【解析】根據(jù)第1處要求,構(gòu)造函數(shù)的函數(shù)名和類名一致,顯然BA構(gòu)
造函數(shù)的名稱為BA,在BA中通過參數(shù)m完成對成員變量a的賦值,
因此構(gòu)造函數(shù)的名稱為BA(intm),在函數(shù)內(nèi)部對成員a賦值,故第1處
的語句應(yīng)添加“BA(intm){a=m;)”。根據(jù)第2處的要求,構(gòu)造函數(shù)的形式
為“PAl(intm,intn)”,m賦值給PA1類成員b,將n作為基類BA構(gòu)造函
數(shù)的參數(shù)值傳入,故第2處應(yīng)添加“PAl(intm,intn):BA(n){b=m;}”。
根據(jù)第3處的要求,函數(shù)形式為PA2(intm,intn,intk),在構(gòu)造函數(shù)中
將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類PA1構(gòu)造函數(shù)的參
數(shù)m和n,因此第3處應(yīng)添力口“PA2(intm,intn,intk):PAl(n,k){C=m;}“。
根據(jù)第4處的要求,PA2類公有派生于PAI,而PA1公有派生于BA,
因此在PA2類中可以調(diào)用基類的geta和getb來獲得基類私有成員a和
b,再輸出PA2的私有成員C即滿足要求,因此第4處應(yīng)添加
€4,5
cout?geta?""?getb?""?C?endl;O
47.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。請完成
以下部分,實現(xiàn)在屏幕上輸出為
C3
C2
這個程序需要修改的部分,請按照以下部分實現(xiàn)。
(1)類CO不能被實例化,請定義一個純虛函數(shù)print,在注釋1后添加
適當(dāng)?shù)恼Z句。
(2)類C1私有虛繼承類CO,請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)類C2公有繼承于CO,請在注釋3后添加適當(dāng)?shù)恼Z句。
(4)類c3公有繼承于C2與C1,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修
改其他的程序代碼。
試題程序:
#include(iostream.h)
classCO
(
};
I[
classCl:
public:
voidprint
(
cout<",,Cr,<<endl;
)
};
classC2:
(
public:
voidprint
(
cout<<"C2"<<endl;
)
};
//********4***x****
classC3:
(
public:
voidprint
{
cout<<"C3"<<endl;
)
};
voidmain
C3Obj3;
C20bj2;
obj3.print;
obj2.print;
return;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test37_3o此工程包含一個
test37_3.cpp,其中定義了類Letter和Number以及Grid,其中Grid類由
Letter類和Number類public派生,但三個類的定義并不完整。請按要
求完成下列操作,將程序補(bǔ)充完整。
⑴添加類Letter的帶一個參數(shù)c的構(gòu)造函數(shù),c是char型的數(shù)據(jù),默認(rèn)
值為'A]該函數(shù)把參數(shù)c的值賦給類的保護(hù)成員ch,請在注釋“〃**1**”
之后添加適當(dāng)?shù)恼Z句。
(2)添加類Number的帶一個參數(shù)n的構(gòu)造函數(shù),n是int型的數(shù)據(jù),默
認(rèn)值為0,該函數(shù)把參數(shù)n的值賦給類的保護(hù)成員num,請在注釋
“〃**2**,,之后添加適當(dāng)?shù)恼Z句。
(3)添加派生類Grid構(gòu)造函數(shù)的定義,傳入的參數(shù)為char型的c和血型
的n,并將其分別賦值給基類的ch和num,請在注釋“〃**3**”之后添加
適當(dāng)?shù)恼Z句。
(4)完成派生類Grid的友元函數(shù)——“<<”運算符重載的定義,使其以
格式“[g.ch,g.num]”輸出,請在注釋“〃**4**”之后添加適當(dāng)?shù)恼Z句。
源程序文件test37_3.cpp清單如下:
#include<iostream,h>
classLetter
(
protected:
charch;
public:
〃**]**
};
classNumber
|
protected:
intnum;
public:
H**2**
);
classGrid:publicLe注er,publicNumber
{
public:
〃**3**
friendostream&operator<<(ostream&o,Grid&g);
);
〃**4**
{
o<<"["<<g.ch<<","<<g.num<<
returno;
}
intmain()
(
Gridg('C,3);
cout<<"Gridreference:"<<g<<endl;
return0;
)
49.使用VC6打開考生文件夾下的工程test31_3o此工程包含一個
test31_3.cpp,其中定義了可以動態(tài)分配的字符串類,但該類的定義并不
完整。請按要求完成下列操作,將程序補(bǔ)充完整。
⑴定義類tstring的私有數(shù)據(jù)成員length和p,它們分別是血型的數(shù)據(jù)和
字符型的指針,其中l(wèi)ength表示一個字符串的長度。請在注釋“〃**1**”
之后添加適當(dāng)?shù)恼Z句。
(2)完成類tstring的構(gòu)造函數(shù),使length等于字符串m的長度,并申請
由指針P指向的length長的字符型空間,將m所指的字符串復(fù)制到該
空間。請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類tstring的成員函數(shù)strcopy(tstringn)的定義該函數(shù)將對象n的
值(包括字符串長度和字符串本身)復(fù)制給調(diào)用該函數(shù)的對象(對象n的
字符串長度任意)。請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
(4)完成類tstring的友元函數(shù)strlink(tstringm,tstringn)的定義,該函數(shù)將
可動態(tài)分配的字符串類對象m和n的字符串成員連接在一起(對象m和
n的字符串長度任意),并返回該串。請在注釋“〃**4**”之后添加適當(dāng)?shù)?/p>
語句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
程序輸出結(jié)果如下:
hellotheworld!
源程序文件test31_3.cpp清單如下:
#include<iostream.h>
#include<conio.h>
#include<string.h>
clasststring
public:
〃**]**
tstring(char*m)
{
〃**2**
strcpy(p,m);
)
voidstrcopy(tstringn);
friendchar*strlink(tstringm,tstringn);
);
voidtstring::strcopy((stringn)
{
〃**3**
char*q;
q=newcharflength];
strcpy(q,(string::p);
q=strcat(tstring::p,n.p);
(string::p=q;
tstring::length=strlen(tstring::p);
),
char*strlink(tstringm,tstringn)
(「「
intlength=strlen(m.p)+strlen(n.p);
char*p;
〃**4**
strcpy(p,m.p);
p=strcat(p,n.p);
returnp;
)
voidmain()
(
tstringa("hello");
tstringb("theworld");
tstringc("!");
a.strcopy(b);
cout<<strlink(a,c)<<endl;
參考答案
l.CCo【解析】對線性表進(jìn)行順序查找時,從表中的第一個元素開始,
將給定的值與表中逐個元素的關(guān)鍵字進(jìn)行比較,直到兩者相符,查找到
所要找的元素為止。在最壞情況下,要查找的元素是表的最后一個元素
或查找失敗,這兩種情況都需要將這個元素與表中的所有元素進(jìn)行比較,
因此比較次數(shù)為no
2.D
3.D解析:數(shù)據(jù)字典通常包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和
處理過程五個部分。
4.C
5.A解析:靜態(tài)數(shù)據(jù)成員是被類的所有對象共享,它不屬于類的任何一
個對象,它的作用域是類范圍。靜態(tài)數(shù)據(jù)成員在每個類對象中并不占有
存儲空間,它只是每個類中分配有存儲空間,供所有對象公用。靜態(tài)數(shù)
據(jù)成員的值對每個對象都一樣,但它的值可以被任何一個對象更新,從
而實現(xiàn)了同一類的不同對象之間的數(shù)據(jù)共享。
6.B解析:在引用函數(shù)模板時,如果沒在函數(shù)名和參數(shù)之間加上類型參
數(shù),就默認(rèn)表示參數(shù)類型嚴(yán)格按照模板定義的類型匹配;如果在函數(shù)名
和參數(shù)之間加上了類型參數(shù),則對實參自動進(jìn)行類型轉(zhuǎn)換。
7.A解析:變量i和j,都是基類A的私有變量,它們是隱蔽的,在派生
類中不能直接訪問。
8.D解析:數(shù)據(jù)的邏輯結(jié)構(gòu)與數(shù)據(jù)在計算機(jī)中的存儲方式無關(guān),它用來
抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,故A選項錯誤。存儲結(jié)構(gòu)分為順
序存儲結(jié)構(gòu)與鏈?zhǔn)酱鎯Y(jié)構(gòu),其中順序存儲結(jié)構(gòu)是將邏輯上相鄰的數(shù)據(jù)
元素存儲在物理上相鄰的存儲單元里,節(jié)點之間的關(guān)系由存儲單元的相
鄰關(guān)系來決定,它主要用于存儲線性結(jié)構(gòu)的數(shù)據(jù),故B選項錯誤。數(shù)組
的存儲方式連續(xù)是指其在計算機(jī)中的存儲方式,它可以用來處理非線性
結(jié)構(gòu),故C選項錯誤。
9.B解析:程序設(shè)計的相關(guān)概念。
10.C解析:所謂軟件危機(jī)是泛指在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇
到的一系列嚴(yán)重問題。選項A、B、D都屬于軟件危機(jī)的一種表現(xiàn),軟
件危機(jī)還包括軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控
制和軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。
11.D
12.B
Bo【解析】程序的三種基本控制結(jié)構(gòu)包括順序、選擇和重復(fù)(循環(huán)),
這三種結(jié)構(gòu)足以表達(dá)出各種其他形式的結(jié)構(gòu)。
13.B解析:本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)一共被
調(diào)用了3次:第一次是在執(zhí)行語句Datedate3(datel);時,用已經(jīng)建立
的對象datel對正在建立的對象date3進(jìn)行初始化;第二次是在調(diào)用fun
函數(shù)時,由于是傳值調(diào)用,因此實參對象date3要對形參對象d進(jìn)行初
始化;第三次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系統(tǒng)用
返回初始化一個匿名對象時使用了拷貝構(gòu)造函數(shù)。
14.AA。【解析】棧是限定在一端進(jìn)行插入刪除的先入后出的線性表數(shù)據(jù)
結(jié)構(gòu),棧頂元素最后被插入到棧中,但是最先被刪除;而棧底元素最先
被插入,最后被刪除。
15.A解析:數(shù)據(jù)流圖包括4個方面,即加工(轉(zhuǎn)換)(輸入數(shù)據(jù)經(jīng)加工變
換產(chǎn)生輸出)、數(shù)據(jù)流CS箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)
據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、
源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體)。不包括選項中的
控制流。
16.B
17.C
18.C本題考查的是順序查找。在進(jìn)行順序查找過程中,如果線性表中
的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找
效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查
找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中
所有的元素進(jìn)行比較,這是順序查找的最壞情況。所以對長度為n的
線性表進(jìn)行順序查找,在最壞情況下需要比較n次。故本題答案為
Co
19.D
解析:建立派生類對象時,構(gòu)值函數(shù)的執(zhí)行順序為:執(zhí)行基類的構(gòu)造
函數(shù)一執(zhí)行成員對象的構(gòu)造函數(shù)一執(zhí)行派生類的構(gòu)造函數(shù)。D)選項定
義對象y4時沒有傳人任何值,則先調(diào)用基類的構(gòu)造函數(shù).XX(),輸
出,A。,然后調(diào)用派生類的構(gòu)造函數(shù)YY(),輸出yy=O,最終輸出為
A0。故本題答案為D)。
20.D解析:構(gòu)造函數(shù)是類的一個特殊成員函數(shù),它與類同名,并且沒有
返回值。C++在創(chuàng)建一個對象時,會自動調(diào)用類的構(gòu)造函數(shù),在構(gòu)造函
數(shù)中可以執(zhí)行初始化成員變量的操作。構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù),也可
以重載。
2LC解析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程
序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測
試的挑剔性、完全測試的不可能性及測試的經(jīng)濟(jì)性。其中沒有測試的可
靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應(yīng)的方法。
22.A
Ao【解析】本題考查混合運算表達(dá)式類型,由表達(dá)式中具有最高優(yōu)先
級的類型所確定,所以答案為A。
23.B解析:C++語言是對C語言進(jìn)行了擴(kuò)充,繼承了它的語法,開增加
了面向?qū)ο蟮脑O(shè)計方法。
24.抽象類抽象類解析:類中一旦有純虛函數(shù)的定義,那么這個類就再
也不能創(chuàng)建此類的對象了,我們把這種類叫做抽象類。
25.物理獨立性物理獨立性解析:邏輯獨立性是指,由于數(shù)據(jù)的局部邏
輯結(jié)構(gòu)與總體邏輯結(jié)構(gòu)之間也由系統(tǒng)提供映像,使得當(dāng)總體邏輯結(jié)構(gòu)改
變時,其局部邏輯結(jié)構(gòu)可以不變,從而根據(jù)局部,邏輯結(jié)構(gòu)編寫的應(yīng)用
程序也可以不必修改。物理獨立性是指,由于數(shù)據(jù)的存儲結(jié)構(gòu)與邏輯
結(jié)構(gòu)之間由系統(tǒng)提供映像,使得當(dāng)數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)
可以不變,所以,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改。
26.選抒選抒
27.消息消息解析:在面向?qū)ο蟮脑O(shè)計中,用來請求對象執(zhí)行某一處理
或回答某些信息的要求稱為消息。
28.非格式化非格式化解析數(shù)據(jù)模型分為格式化模型和非格式化模型,
關(guān)系模型屬于非格式化模型。
29.cout<<Base::acout<<Base::a解析:本題考核作用域分辨符號的使
用。作用域分辨符號是它可以用來限定要訪問的成員所在的類的名
稱。一般來說,在派生類中對基類成員的訪問應(yīng)該是惟一的。但是,多
繼承情況下可能造成對基類中某個成員的訪問出現(xiàn)不惟一的情況,通過
使用對象作用域分辨符可以解決這種對基類成員訪問的二義性問題。題
中派生類Derived與基類Base定義了數(shù)據(jù)成員a,所以要訪問基類數(shù)據(jù)
成員可以通過作用域分辨符來實現(xiàn)。
30.1414解析:本題考核運算符的應(yīng)用。條件運算符是一種在兩個表達(dá)
式中選擇一個的操作,它是C++中惟一的三元運算符。在本題中,先計
算(a>B)?a:b,因為a<b,所以條件表達(dá)式的值為0,因此y=b=14,
而y>c的邏輯值為真,所以表達(dá)式的值為y的值,即14。
31.逐步求精逐步求精
32.抽象類抽象類
33.沒有重載口運算符沒有重載口運算符解析:ma不是一般的數(shù)組,而
是一個新定義的類,盡管該類封裝了一個數(shù)組,但新類并沒有提供口操
作符的具體實現(xiàn),因此是錯誤的。
34.this
35.尖括號<>尖括號<>
36.(1)應(yīng)改為"(3::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”。
37.(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)準(zhǔn)命名空間std,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少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]);
38.(1)應(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⑴;"。第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對象的抽象,而對象是類的具體實例。
第3處叮(3.561?41111^01'(100);”語句中的丁€:為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
39.(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;"。
40.(1)應(yīng)改為“TC::TC”。
\n(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處的語句叮(2::丁??芍?,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函
數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“字符,用
采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::?TC”。
41.(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)分別改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
42.(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);
43.(1)應(yīng)添加“public:
\n⑵“inti”應(yīng)改為"inti(10);
\n⑶“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)不會退出。
44.(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)
該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
45.(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]);
46.使用VC++6.0打開考生文件夾下的源程序文件3
溫馨提示
- 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裝修垃圾清運合同范本
- 2024年廢棄物處理爆破合同
- 2024家庭保姆用工合同版
- 2024年商場室內(nèi)LED廣告屏購銷合同
- 2024年工程項目質(zhì)量保證與驗收合同條款
- 二手房產(chǎn)買賣合同協(xié)議模板
- 2024年簡化版購房合同協(xié)議
- 各類維修合同范文集成
- 合同訴訟時效問題
- 2024版店鋪合租合同樣本
- 【圖文】非財務(wù)人員成本管理知識培訓(xùn)
- 室外管網(wǎng)工程、外墻防水工程(報價清單)
- 瑪氏面試案例分析題及答案
- 尺寸鏈設(shè)計與計算
- 干細(xì)胞文獻(xiàn)綜述
- 專利申請著錄項目變更書
- 全文《以史為鑒持續(xù)推動美麗中國建設(shè)》PPT
- 《2021國標(biāo)結(jié)構(gòu)專業(yè)圖集資料》04G410-2 1.5mX6.0m預(yù)應(yīng)力混凝土屋面板(鋼筋混凝土部分)
- 設(shè)計方案——噴漆烘干房
- Humpty兒童跌倒評估量表
- 金山江天寺規(guī)約
評論
0/150
提交評論