版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年浙江省湖州市全國計算機(jī)等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.下列描述正確的是()。
A.表示m>n為true或m<n為true的表達(dá)式為m>n&&m<n
B.switch語句結(jié)構(gòu)中必須有default語句
C.if語句結(jié)構(gòu)中必須有else語句
D.如果至少有一個操作數(shù)為true,則包含運算符的表達(dá)式為true
2.已知有定義:
constintD=5;
inti=1;
doublef=0.32;
charc=15;
則下列選項錯誤的是
A.++i;B.D——;C.c++;D?——f;
3.若有intx=2,y=3,z=4,m;則在計算表達(dá)式m=(x<y)?z+2:z-4后,
m的值為o
A.6B.5C.4D.2
4.下列敘述中正確的是
A.黑箱(盒)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征
B.黑箱(盒)測試方法主要考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征
C.白箱(盒)測試不考慮程序內(nèi)部的邏輯結(jié)構(gòu)
D.上述三種說法都不對
5.下列說法中錯誤的是()。
A.公有繼承時基類中的public成員在派生類中仍是public的
B.公有繼承時基類中的private成員在派生類中仍是private的
C.私有繼承時基類中的public成員在派生類中是private的
D.保護(hù)繼承時基類中的public成員在派生類中是protected的
6.下列語句中正確的是
A.char*myString=''Hello-World!'';
B.charmyString="Hello-World!";
C.charmyString[ll]=,,Hello-World!;
D.charnlyString[12]="Hello-World!";
7.有以下程序:#include<iostream>usingnamespacestd;classTestClass
{public:TestClass(intn){number=n;}〃拷貝構(gòu)造函數(shù)
TestClass(TestClass&other){number=other.number;}?TestClass(){}
private:intnumber;};TestClassfun(TestClassP){TestClasstemp(p);return
temp;}intmain(){TestClassobjl(10),obj2(0);TestClassobj3(obj1);
obj2=fun(obj3);return0:}程序執(zhí)行時,TestClass類的構(gòu)造函數(shù)被調(diào)用的
次數(shù)是()。
A.2B.3C.4D.5
8.關(guān)于虛函數(shù),下列表述正確的是()。
A.如果重定義虛函數(shù)時使用了保留字virtual,則該重定義函數(shù)仍然是虛
函數(shù)
B.虛函數(shù)不得聲明為靜態(tài)函數(shù)
C.虛函數(shù)不得聲明為另一個類的朋友函數(shù)
D.派生類必須重新定義基類的虛函數(shù)
9.下面程序的執(zhí)行結(jié)果是#include"iostream.h"void
main(){int*p,r;p=newin;*p=20;
r=sizeof(*p);cout<<r<<endl;delete
P;1
A.程序錯誤B.內(nèi)存為20地址的大小.C.20D.4
10.下列描述中正確的是()o
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題
C.軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)過程中需要應(yīng)用工程化原則
D.軟件工程只是解決軟件開發(fā)中的技術(shù)問題
二、單選題(13題)
11.下面有關(guān)重載函數(shù)的說法中正確的是
A.重載函數(shù)必須具有不同的返回值類型
B.重載函數(shù)形參個數(shù)必須不同
C.重載函數(shù)必須有不同的形參列表
D.重載函數(shù)名可以不同
12.若磁盤上已存在某個文本文件,其全路徑文件名為d:\shiti\tes.txt,
下列語句中不能打開該文件的是()o
A.ifstreamfile("d:\shiti\test.txt");
B.ifstreamfile("d:\\shiti\\test.txt");
C.ifstreamfile;file.open("d:\\shiti\\test.txt");
D.ifstream*pFile=newifstream("d:\\shiti\\test.txt");
13.有下列程序:
#include<stdiO.h>
voidmain()
{inta=S,b=l,t;
t=(a?2)|b;printf("%d\n",t);
)
程序運行后的輸出結(jié)果是()oA.21B.llC.6D.1
14.下面關(guān)于類和對象的描述中,錯誤的是()。
A.類就是C語言中的結(jié)構(gòu)體類型,對象就是C語言中的結(jié)構(gòu)體變量
B.類和對象之間的關(guān)系是抽象和具體的關(guān)系
C.對象是類的實例,一個對象必須屬于一個已知的類
D.類是具有共同行為的若干對象的統(tǒng)一描述體
15.
21.可以用p.a的形式訪問派生類對象p的基類成員a.其中a是().
A.私有繼承的公有成員B.公有繼承的私有成員
C.公有繼承的保護(hù)成員D.公有繼承的公有成員
16.已知一函數(shù)的形參說明為intarr[5][6],則與此等效的形參說明為
()o
A.intarr[][]B.int[5][]C.int*a[6]D.int(*a)[6]
17.下列程序的運行結(jié)果為()。#include
voidmain{inta=2:intb=a+l:cout<<a/b<<endl:A.O.66667B.OC.O.7
D.O.66666666...
18.在下列枚舉符號中,用來表示“相對于當(dāng)前位置”文件定位方式的是
()O
A.ios_base::cur
B.ios_base::beg
C.ios_base::Out
D.ios_base::end
19.下列有關(guān)繼承和派生的敘述中,正確的是()。
A.派生類不彘訪問基類的保護(hù)成員
B.作為虛基類的類不能被實例化
C.派生類應(yīng)當(dāng)向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實現(xiàn)
20.在“文件包含”預(yù)處理語句的使用形式中,當(dāng)#include后面的文件名
用“”括起時,尋找被包含文件的方式是
A.直接按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索目錄
B.先在源程序所在的目錄搜索,再按系統(tǒng)設(shè)定的標(biāo)準(zhǔn)方式搜索
C.僅僅搜索源程序所在目錄
D.僅僅搜索當(dāng)前目錄
21.若有以下定義:chars(10)="program",t[]="test";則下列選項中對
字符串操作錯誤的是()。
A.strcpy(s,t);B.strcat(s,t);C.cout<<strlen(s);D.gets(s);
22.建立派生類對象時,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
23.若在表達(dá)式y(tǒng)/x中,“/”是作為成員函數(shù)重載的運算符,則該表達(dá)
式還可以表示為
A.x.operator/(y)
B.operator/(x,y)
C.y.operator/(x)
D.operator/(y,x)
三、2.填空題(12題)
24.以下程序輸出的結(jié)果是[】。
#include<iostream,h>
voidmain()
(
inta=5,b=4,c=3,d;
d=(a>b>C);
cout<<d;
)
25.C++語言中關(guān)鍵字運算符有new,delete和[]o
26.下列程序編譯錯誤,因為add函數(shù)返回值是一個引用,故對return
后返回值的要求是【]o
#include<iostream,h>
int&add(intx,inty)
(
returnx+y;
1
voidmain()
inti=3,j=19;
cout<<(add(i,j)+=20)<<endl;
27.利用表達(dá)式a[i]可以訪問int型數(shù)組a中下標(biāo)為i的元素。在執(zhí)行了
語句int*p=a后,利用指針p也可訪問該元素,相應(yīng)的表達(dá)式是_____o
28.程序的測試方法分為靜態(tài)分析和動態(tài)分析。使用測試用例在計算機(jī)
上運行程序,使程序在運行過程中暴露錯誤,這種方法稱為【]o
29.當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(存儲結(jié)構(gòu)、存取方式等)改變時,不影響數(shù)據(jù)庫的
邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化,這是指數(shù)據(jù)的【】。
30.將x+y*z中的“+”用成員函數(shù)重載,“*”用友元函數(shù)重載應(yīng)寫為[】。
31.若結(jié)點的存儲地址與其關(guān)鍵字之間存在某種映射關(guān)系,則稱這種存
儲結(jié)構(gòu)為【】。
32.C++中封裝性、繼承性和【】是面向?qū)ο笏枷氲闹饕卣鳌?/p>
33.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的集合。
34.友元類的所有成員函數(shù)都是另一個類的【】。
35.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)
的動態(tài)存儲空間,請?zhí)羁铡?/p>
st=(char*)【];
四、程序改錯題(10題)
36.使用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
II********epj^or********
TCobjl;
objl.Print;
TCobj2(3);
II********epj^or********
objl.number=10;
II********ej*j*0]*^^o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
I********epj*or********I
TC(inti)
(
m_i=i;
)
voidprint
(
cout?-m_i?,;
)
public:
intm_i;
intmain
!********6j*j*or********!
inti;
TC04(10);
while(i>5)
!**************I
1++
04.print;
cout?endl;
returnO;
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
?TC;
};
/I******ej*por******
TC:TC
(
cout?"Constructor"?",";
i=0;
I/******ej*j^0r******
TC:display
(
tout?"i="?i<<","?endl;
)
I/******ej^0r******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******err()r******的下面。
試題程序:
#include<iostream.h>
voidmain
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
/I********epj*or********
cin.getline(str,120);
II********epj^or********
while(str)
/I********epj*or********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
40.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
//********epj^or********
catch(chars)
(
cout?s?endl;
try
(
throw((int)0);
/j********epj'or********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
II**************
catch
cout?"ERROR"?endl;
returnO;
)
41.使用VC++6.0打開考生文件夾下的源程序文件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
retumnumber;
voidPrintconst
cout?"number="?number?endl;
)
private:
intnumber;
voidmain
II********ep^or********
TCobjl;
objl.Print;
TCobj2(3);
II********ep^or********
objl.number=10;
II********ej*j*or*^^o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
42.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
//************白勺-?日j°
試題程序:
#include<iostream>
#include<fstream>
/I********ep^or********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
/I********ep^or********
outl.open("1.txt",binary|app);
for(inti=0;s[i]!=0;i++)
II**************
outl.puts(s[i]);
}
outl.close;
)
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
intmain
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
//******epj*or******
voidmain
(
I/******epj^or******
intm=0142:
/I******epj*or******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
-TC;
);
1I******ej*j*or******
cout?"Constructor"?",";
i=0;
)
II******ej*^*or******
TC:display
(
tout?"i="?i<<","?endl;
}
II**********
TC:TC
(
COUI?"Destructor"?endl:
}
voidmain
(
TCa;
a.display;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
II********ej*j*01********
catch(chars)
(
cout?s?endl;
try
(
throw((int)0);
II**************
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
//********epj^or********
catch
cout?"ERROR"?endl;
returnO;
五、綜合應(yīng)用題(2題)
46.使用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句。
(3)在析構(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;
staticintAllNo;
public:
TCFruit(floatw)
(
//********2********
AllWeight+=w:
AllNo++:
)
?TCFruit
(
//********3********
A11Weight-=Weight:
)
voiddisplay
('
cout?"SellaFruitwith"?Weight?"k9"<<
endl;
cout<<"Allsellnumber:"?AllNo?endl;
cout?"Allsellweight:"<<AllWeight?"k9"?
endl?endl;
)
};
II********4********
floatTCFruit::AllWeight=O.0;
intmain
TCFruitFruitl(l.2);
Fruitl.display;
TCFruitFruit2(2.3);
Fruit2.display;
returnO;
47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程
proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個
類的賦值運算符成員函數(shù)Operator:,以實現(xiàn)深層復(fù)制。
要求:
,力****************666*************"J^間o不多改的部
分。
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。
//CDeepCopy.h
#include<iostream>
#include<string>
usingnamespacestd;
classCDeepCopy
public:
intn;//動態(tài)數(shù)組的元素個數(shù)
int*p;〃動態(tài)數(shù)組首地址
CDeepCopy(int);
CDeepCopy;
CDeepCopy&operator=(constCDeepCopy&r);//賦值運算符函數(shù)
);
voidwriteToFile(char});
//main,cpp
#include,,CDeepCopy.h"
CDeepCopy::一CDeepCopy{delete[]P;}
CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}〃構(gòu)造函數(shù)實現(xiàn)
CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃賦值運算
符函數(shù)實現(xiàn)
〃//半半舉”舉舉舉舉舉舉舉舉舉
//***********666***********
intmain
CDeepCopya(2),d(3);
a.p[O]=l;d.p[O]=666;〃對象a,d數(shù)組元素的賦值
CDeepCopyb(3);//調(diào)用賦值運算符函數(shù)
a.p[O]=88;b=a;
cout?b.p[O];〃顯示內(nèi)層局部對象的數(shù)組元素
cout?d.p[O];//顯示d數(shù)組元素a.p[O]的值
cout?”dfadeaway;\n";
cout?a.p[0];//顯示a數(shù)組元素a.p[0]的值
,,,,
writeToFile();
return0;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test26_3o此工程包含一個
test26_3.cpp,其中定義了類queue,但該類的定義并不完
整。請按要求完成下列操作,將程序補(bǔ)充完整。
⑴完成類queue的無參數(shù)的構(gòu)造函數(shù)的定義,要求把數(shù)據(jù)成員bl和el
都初始化為0,同時輸出queueinitializedo請在注釋“〃**1**”之后添加
適當(dāng)?shù)恼Z句。
(2)完成類queue的成員函數(shù)qput(intj)的定義它的功能是把新的元素
加入隊列,過程是先依據(jù)bl的值判斷數(shù)組是否已經(jīng)滿了,如果是就輸出
queueisfull,否則bl自加一,并且把參數(shù)j的值存入bl指向的數(shù)組元
素中,請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句。
(3)完成類queue的成員函數(shù)qget()的定義,它的功能是把隊列開頭的元
素提取出隊列,并返回該值,過程是先比較el和bl的值判斷隊列是否
已空,如果是就輸出queueisempty,否則el自加一,并且把el指向的
數(shù)組元素返回,請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
程序輸出結(jié)果如下:
queueinitialized
queueinitialized
3311
4422
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test26_3.cpp清單如下:
#include<iostream.h>
classqueue
(
intq[100];
intbl,el;
public:
queue();
voidqput(intj);
intqget();
);
queue::queue()
〃**1**
1
voidqueue::qput(intj)
(
〃**2**
(
cout<<"queueisfull\n";
return;
)
bl++,
q[bi]=j;
intqueue::qget()
H**3**
(
cout<<"queueisempty\n";
return0;
)
el++;
returnq[el];
)
voidmain()
(
queueaa,bb;
aa.qput(ll);
bb.qput(22);
aa.qput(33);
bb.qput(44);
cout<<aa.qget()<<""<<aa.qget()<<"\n";
cout<<bb.qget()<<""<<bb.qget()<<"\n";
49.使用VC6打開考生文件夾下的工程test29_3o此工程包含一個
test29_3.cpp,其中定義了二維坐標(biāo)類Coordinate和三維坐標(biāo)類
ThreeDCoord,其中ThreeDCoord類由Coordinate類public派生,但兩
個類的定義并不完整。請按要求完成下列操作,將程序補(bǔ)充完整。
⑴定義類Coordinate的保護(hù)數(shù)據(jù)成員x和y,它們都是int型的數(shù)據(jù),
代表二維坐標(biāo)的橫縱坐標(biāo)值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。
(2)根據(jù)類Coordinate定義后的成員函數(shù)Display的實現(xiàn),補(bǔ)充該函數(shù)在
類Coordinate定義體內(nèi)的聲明,Display為二維坐標(biāo)類的虛函數(shù)。請在注
釋“〃**2**。,,之后添加適當(dāng)?shù)恼Z句。
(3)完成二維坐標(biāo)類Coordinate的構(gòu)造函數(shù),將參數(shù)a和b分別賦值給數(shù)
據(jù)成員x和yo請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
(4)根據(jù)ThreeDCoord類構(gòu)造函數(shù)的聲明,補(bǔ)充ThreeDCoord構(gòu)造函數(shù)
的實現(xiàn),參數(shù)a和b通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類的數(shù)據(jù)成員
x和y,c賦值給數(shù)據(jù)成員2。請在注釋“//**4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下;
[1,2]
[3,4,5]
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件tese9_3.cpp清單如下:
#include<iostream,h>
classCoordinate
{protected:
〃**]**
public:
Coordinate(inta=0,intb=0);
〃**2**
);
Coordinate::Coordinate(inta,intb)
(
〃**3**
)
voidCoordinate::Display()const
cout<<'['<<x<<","<<y<<']'<<endl;
classThreeDCoord:publicCoordinate
intz;
public:
ThreeDCoord(inta=0,intb=0,intc=0);
virtualvoidDisplayOconst;
);
〃**4**
voidThreeDCoord::Display()const
(
cout<<'['<<x<<","<<y<<","<<z<<']'<<
endl;
}
voidmain()
(
Coordinatec(l,2);
ThreeDCoordt(3,4,5);
c.Display();
t.Display();
參考答案
l.D解析:本題主要考查Ct+語言的基本語法,選項A中應(yīng)該為m>
n||m<n:選項B中default語句可有可無;選項C中訂可以單獨作為一
條語句,不必須和else搭配。
2.B解析:“+-”運算符不能用于常量。
3.A
4.A解析:黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只
是根據(jù)程序功能導(dǎo)出測試用例,選項A是正確的,選項B錯誤。白箱
測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例,選項C錯誤。
正確答案為A。
5.B解析:公用繼承時基類中的公用成員和保護(hù)成員在派生類中保持原
有訪問屬性,其私有成員仍為基類私有。私有繼承時,基類的公有成員
和保護(hù)成員在派生類中成了私有成員,其私有成員仍為基類私有。受保
護(hù)的繼承時,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其
私有成員認(rèn)為基類私有。
6.A解析:選項C、D的數(shù)組下標(biāo)超界,?對于選項B,不能將字符串賦
值給字符,可以將一個字符串賦值給字符指針,指針指向字符數(shù)組的首
地址。
7.C解析:objl(10)執(zhí)行一次構(gòu)造函數(shù),obj2(0)也執(zhí)行一次構(gòu)造函數(shù);
obj3(objl)t3t.objl作為參數(shù)執(zhí)行一次構(gòu)造函數(shù);fun(obji3)中的temp(p)
將執(zhí)行一次構(gòu)造函數(shù),而fun本身是以按值傳遞參數(shù),形參在fun函數(shù)
內(nèi)也要分配獨立的空間,所以也要執(zhí)行一次構(gòu)造函數(shù),其返回結(jié)果也是
TestClass類型的,同樣需要執(zhí)行一次構(gòu)造函數(shù),所以一共要執(zhí)行4次。
8.B
9.D解析:理解sizeof的用法,它可以運算出各種數(shù)據(jù)類型所占內(nèi)存空
間的多少。注意:選項C)中是指針p所指向的內(nèi)存地址中內(nèi)容是20。
注意:在用完申請后的內(nèi)存應(yīng)立刻釋放。
10.C
\r\n
軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計算機(jī)
軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)
工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需
求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以
保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成本不斷提高、軟件開發(fā)
生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。軟件項目的管
理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術(shù)都是軟件工程需要解決的
部分問題。因此選項C正確。
11.C解析:函數(shù)重載允許用同一個函數(shù)名定義多個函數(shù)。被重載的函數(shù)
必須要有不同的形參列表。不可以根據(jù)函數(shù)返回值類型來重載函數(shù)。
12.A
13.A
Ao【解析】本題考查移位運算符在程序中對5邏輯左移2位,其值擴(kuò)
大4倍等于20,然后再進(jìn)行按位運算,其值等于21。
14.A解析:在C++語言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及
操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。
15.D
16.D解析:二維數(shù)組可以看作是一維數(shù)組的擴(kuò)展。選項D表示的是一
個一維數(shù)不清組,里面每個元素是一個指針,而指針肯定指向某個地址,
從而完成二維數(shù)組的擴(kuò)展。考生要注意選項C中*和口的運算優(yōu)先級。
17.B
表達(dá)式值的類型是由操作數(shù)的類型決定的,因為本題的兩個數(shù)都是int
型的,所以得出的結(jié)果也為int型,即去掉小數(shù)點后的部分,只取商的
整數(shù)部分。
18.A
Ao【解析】主要考查文件流的定位問題。冀中iosbase::beg表示相
對于文件首,ios_base::cur表示相對于當(dāng)前位置(負(fù)數(shù)表示當(dāng)前位置
之前),ios_base::end表示相對于文件尾,ios_base::out表示在文
件流的建立中為文件的輸出而打開。
19.C
派生類可以訪問基類的保護(hù)成員,而不能訪問基類的私有成員。作為
虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么
仍然使用基類的成員函數(shù)。
20.B
21.B
22.A
本題考查的是在繼承中派生類的對象調(diào)用構(gòu)造函數(shù)的順序,應(yīng)該是先
調(diào)用基類的構(gòu)造函數(shù),然后是成員中的對象對應(yīng)類的構(gòu)造函數(shù),最后
是派生類自己的構(gòu)造函數(shù)。
23.C
解析:“/”是一個二元運算符,作為成員函數(shù)重載時形參表中只有一
個參數(shù),對應(yīng)于第二操作數(shù),而第一操作數(shù)就是對象本身,以this指
針的形式隱藏在形參表中。本題中,y為第一操作數(shù),x為第二操作
數(shù),故正確答案為C。
24.00解析:水題的關(guān)鍵在于對變量c的賦值運算:
d=(a>b>c)
d=(5>4>3)
先算5>4,為真,得1,即:d=(l>3),此時1>3,為假,得0。
25.sizeofsizeof解析:C++語言中關(guān)鍵字運算符有3個分別new,delete
和sizeof。new是申請內(nèi)存,delete是釋放內(nèi)存,sizeof是求字節(jié)數(shù)。
26.不能是表達(dá)式不能是表達(dá)式解析:引用是變量的別名,其實質(zhì)是變
量的地址。return在返回值時,如果其后為表達(dá)式,則系統(tǒng)為該表達(dá)式
生成一個臨時變量用于存放該表達(dá)式的結(jié)果,函數(shù)執(zhí)行完畢之后該變量
被系統(tǒng)回收,因此,返回的該變量的地址對調(diào)用函數(shù)來說已經(jīng)沒有意義
了。
27.*(p+i)*(p+i)解析:指針p指向數(shù)組首地址,p+i指向第i個元素地
址,貝U*(p+i)表示第i個元素的值。
28.動態(tài)分析動態(tài)分析解析程序的測試方法分為靜態(tài)分析和動態(tài)分析。
使用測試用例在計算機(jī)上運行程序,使程序在運行過程中暴露錯誤,這
種方法稱為動態(tài)分析。
29.物理獨立性物理獨立性解析:數(shù)據(jù)獨立性是數(shù)據(jù)與程序間的互不依
賴性,即數(shù)據(jù)庫中數(shù)據(jù)獨立于應(yīng)用程序而不依賴于應(yīng)用程序。也就是說,
數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)與存取方式的改變不會影響應(yīng)用程序。數(shù)據(jù)
獨立性一般分為物理獨立性與邏輯獨立性兩級。
30.operator+(operator*(yz))operator+(operator*(y,z))解析:C++中用成員
函數(shù)重載x*y為:x.operator*(y),用友元函數(shù)重載x*y為:operator*(x,
y),用成員函數(shù)重載x+y為:x.operator+(y),用友元函數(shù)重載x+y為:
operator+(x,y)o
31.順序存儲結(jié)構(gòu)順序存儲結(jié)構(gòu)
32.多態(tài)性多態(tài)性解析:面向?qū)ο笙到y(tǒng)包含了三個特征-封裝性、繼承性
和多態(tài)性,這三個特征可以很好的實現(xiàn)數(shù)據(jù)抽象,進(jìn)行行為共享,完成
進(jìn)化求解和描述一個系統(tǒng)的確定行為。
33.軟件工具軟件工具解析:軟件開發(fā)環(huán)境或稱軟件工程環(huán)境是全而支
持軟件開發(fā)全過程的軟件工具集合。這些軟件工具按照一定的方法或模
式組合起來,支持軟件生命周期內(nèi)的各個階段和各項任務(wù)的完成。
34.友元函數(shù)友元函數(shù)解析:C++語言中友元類中的函數(shù)都是另一個類
的友元函數(shù)。
35.malloc(ll)或malloc(sizeof(char)*11)malloc(11)或
malloc(sizeof(char)*11)解析:malloc函數(shù)的參數(shù)可以是一個具體的常數(shù),
也可以是一個表達(dá)式。在本題中,可以是malloc(ll),也可以借助于sizeof
運算符來表示。
36.⑴應(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ù),所以修改為
,5
“objl.SetNumber(lO);O類是對象的抽象,而對象是類的具體實
例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,
這里應(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.⑴應(yīng)改為“TC::TC”。
(2)應(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”。
39.(1)應(yīng)改為“ein.getline(str,120,?);
(2)應(yīng)改為"while(str[i])”。
,?
(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)o
【解析】本題中要求以輸入字符“?”為結(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(st巾]>=a)”語句是判斷字符str用是否為小寫字符,而現(xiàn)有的語句只
是判斷字符是否大于a,但是小寫字符應(yīng)該是a到2,所以修改為
5,
“if(str[i]>=a&&str[i]>=z)o
40.⑴應(yīng)改為"catch(char*s)”。
(2)應(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(…)”。
41.⑴應(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);0類是對象的抽象,而對象是類的具體實例。
第3處叮5$61m11^1'(100);”語句中的立為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);
42.(1)應(yīng)改為"usingnamespacestd;
(2)應(yīng)改為"outl.open("1.txt",ios::binaryIios::app);"。
5,
(3)應(yīng)改為“outl.put(s[i]);o
【解析】本題第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("l.txt",ios::binaryIios::app);“。第3個標(biāo)識應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
“outl.put(s[i]);?,o
43.(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,因
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《知識產(chǎn)權(quán)前沿問題》課件
- 《支氣管哮喘防治》課件
- 地理(河南)-【八省聯(lián)考】河南、山西、陜西、內(nèi)蒙古、四川、云南、寧夏、青海八省2025年高考綜合改革適應(yīng)性演練
- 《對標(biāo)管理咨詢》課件
- 人教版八年級上冊地理第2章《中國的自然環(huán)境》教案
- 小學(xué)數(shù)學(xué)二年級數(shù)學(xué)加減法練習(xí)題
- 一模閱卷語知作文評分說明南京市一模閱卷語知閱讀評分細(xì)則
- 上杭一中屆模擬試卷語文試題
- 寵物用品設(shè)計師職位概述
- 促進(jìn)學(xué)生學(xué)業(yè)成績提高的班級計劃
- 車間現(xiàn)場安全培訓(xùn)內(nèi)容課件參考
- 油藏工程-油藏物質(zhì)平衡方法-1課件
- 三上書法《撇》教學(xué)課件
- 河北省廊坊市藥品零售藥店企業(yè)藥房名單目錄
- 超星爾雅學(xué)習(xí)通《三國志導(dǎo)讀》章節(jié)測試(含答案)
- 簡單的個人原因辭職報告(通用17篇)
- 交響曲欣賞-完整版PPT
- 公司軟件銷售管理制度
- micro810可編程控制器用戶手冊
- CVC導(dǎo)管維護(hù)技術(shù)評分標(biāo)準(zhǔn)
- 東風(fēng)7C型(DF7C)內(nèi)燃機(jī)車
評論
0/150
提交評論