




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年湖南省衡陽市全國計算機等級考試
C++語言程序設(shè)計真題(含答案)
學校:班級:姓名:考號:
一、1.選擇題(10題)
1.概要設(shè)計中要完成的事情是()o
A.系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的設(shè)計B.系統(tǒng)結(jié)構(gòu)和過程的設(shè)計C.過程和接
口的設(shè)計D.數(shù)據(jù)結(jié)構(gòu)和過程的設(shè)計
2.虛函數(shù)()是可以不同的。
A.函數(shù)名B.參數(shù)個數(shù)C.返回類型D.函數(shù)體內(nèi)容
3.有如下說明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數(shù)值為9的表達式是
A.*p+9B.*(p+8)C.*p+=9D.p+8
4.下列數(shù)據(jù)結(jié)構(gòu)中能應(yīng)用二分查找的是
A.有序線性鏈表B.有序順序表C.順序存儲的棧D.順序存儲的隊列
5.有如下的運算符重載函數(shù)定義:doubleoperator+(inti,intk){return
double(i+k);}但定義有錯誤,對這個錯誤最準確的描述是()。
A.“+”只能作為成員函數(shù)重載,而這里的“+”是作為非成員函數(shù)重載的
B.兩個int型參數(shù)的和也應(yīng)該是int型,而這里將“+”的返回類型聲明為
double
C.沒有將運算符重載函數(shù)聲明為某個類的友元
D.C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,不能再定義同樣的
運算符
6.程序設(shè)計語言的基本成分是數(shù)據(jù)成分、運算成分、控制成分和()。
A.對象成分B.變量成分C.語句成分D.傳輸成分
7.有以下程序:#include〈iestream〉usingnamespacestd;intf(intn)
{if(n==1)return1;elsereturnf(n-l)+l;}intmain(){inti,j=0;for(i=1;
i<3;i++)j+=f(i);cout<
A.4B.3C.2D.1
8.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其
中0SiS9,則對a數(shù)組元素不正確的引用是
A.a[p-a]B*(&a[i])C.p[i]D.a[10]
9.字面常量42、4.2、42L的數(shù)據(jù)類型分別是
A.long、doublexint
B.longxfloat、int
C.int、double、long
D.int、floatslong
10.有以下程序:#include<iostream>usingnamespacestd;class
sample{private:intx;public:sample(intA){x=a;frienddouble
square(samples);};doublesquare(samples){returnS.X*S.K;}int
main(){sa
A.20B.30C.900D.400
二、單選題(13題)
H.下列關(guān)于運算符函數(shù)的敘述中,錯誤的是
A.運算符函數(shù)的名稱總是以operator為前綴
B.運算符函數(shù)的參數(shù)可以是對象
C.運算符函數(shù)只能定義為類的成員函數(shù)
D.在表達式中使用重載的運算符相當于調(diào)用運算符重載函數(shù)
12.算法的有窮性是指
A.算法程序的運行時間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長度是有限的
D.算法只能被有限的用戶使用
13.算法的空間復(fù)雜度是指()。
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
14.下列有關(guān)繼承和派生的敘述中,正確的是()。
A.派生類不彘訪問基類的保護成員
B.作為虛基類的類不能被實例化
C.派生類應(yīng)當向基類的構(gòu)造函數(shù)傳遞參數(shù)
D.虛函數(shù)必須在派生類中重新實現(xiàn)
15.已知chara;intb;floatC;doubled;則表達式a*b+c-d的結(jié)果為()o
A.doubleB.intC.floatD.char
16.if語句的語法格式可描述為:
格式1:if(〈條件〉)V語句〉
或格式2:if(〈條件〉)〈語句1>else<語句2>
關(guān)于上面的語法格式,下列表述中錯誤的是
A.<條件>部分可以是一個if語句,例如if(if(a==0)…)…
B.<語句>部分可以是一個if語句,例如if(…)if(…)…
C.如果在<條件>前加上邏輯非運算符!并交換〈語句1〉和<語句2>
的位置,語句功能不變
D.〈語句>部分可以是一個循環(huán)語句,例如if(...)while(...)...
17.下列代碼段中聲明了3個類:ClassPerson{};ClassStudent:public
Person{};ClassUndergraduate:Student{};下列關(guān)于這些類之間關(guān)系
的描述中,錯誤的是()。
A.類Person是類Undergraduate的基類
B.類Undergraduate從類Student公有繼承
C.類Student是類Person的派生類
D.類Undergraduate是類Person的派生類
27.如果類A被說明成類B的友元,則().
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問類B的成員
18.D.類B不一定是類A的友元
19.
28.對于語句couKCsetfill?*,)<<setw(10X<l<<setfill(,*')(〈setw(2)〈〈2;的輸出結(jié)
果是().
A.*********1*2B.********12
C.???****1*2D.12********
20.有如下程序:
#inClude<iostream>usingnamespaCestd;ClassSample{
friendlongfun(SampleS);public:
Sample(10ngA.{x=a;}private:
longX;
};longfun(SampleS){
if(S.x<2)retum1;
returnS.X*fun(Sample(s.x-1));}
intmain(){
intsum=O;
for(inti=0;i<6;i++){sum+=fun(Sample(i));}
Cout?sum:return0;
)
執(zhí)行這個程序的輸出結(jié)果是()oA.120B.16C.154D.34
21.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
22.下列關(guān)于成員函數(shù)特征的描述中,錯誤的是()。
A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù)B.成員函數(shù)可以重載C.成員函數(shù)可以設(shè)
置參數(shù)的默認值D.成員函數(shù)可以是靜態(tài)的
23.有如下程序:
#include<iostream>
usingnamespacestd;
classXX{
intx;
public:
XX(intxx=0):x(xx){)
intgetX(){returnx;}
);
classYY:publicXX{
inty;
public:
YY(intxx,intyy):x(xx),y(yy){}
intgetV(){returngetX()+y;}
);
intmain(){
YYc(3,4);
cout?c.getV()+c.getX()?endl;
return0;
運行這個程序的輸出結(jié)果是
A.3B.4C.7D.10
三、2.填空題(12題)
24.C++定義了類庫實現(xiàn)數(shù)據(jù)的輸入和輸出,為根基類。
25.下列程序編譯錯誤,因為add函數(shù)返回值是一個引用,故對return
返回值的要求是______O
#include<iostream.h>
int&add(intx,inty)
{
returnx+y;
)
voidmain()
(
inti=3,j=19;
cout<<(add(i,j)+=20)<<endl;
)
26.operator是運算符重載時必須使用的關(guān)鍵字,它和被重載的運算符連
在一起,作為運算符函數(shù)的專用函數(shù)名,務(wù)必把該函數(shù)說明為的。
27.使用函數(shù)模板的方法是先說明函數(shù)模板,然后實例化成相應(yīng)的
進行調(diào)用執(zhí)行。
28.浮點數(shù)的默認精度值是
29.請定義一個函數(shù)名為A,返回值為int,沒有參數(shù)的純虛函數(shù)的定義
是【】。
30.在有n個結(jié)點的二叉鏈表中,值為非空的鏈域的個數(shù)為【】。
31.以下函數(shù)模板max()的功能是:返回數(shù)組a中最大元素的值。請將
橫線處缺失部分補充完整。
template<typenameT>Tmax(Ta[],intn)
{Tm=a[0];
for(inti=l;i<n;i++)
if(a[i]>m)[];
returnm;
)
32.有如下程序:
#include<iostream>
usingnamespacestd;
classA{
public:
A(){cout<<"A";}
);
classB:privateA{
public:
B(){cout<<'B';}
);
intmain(){
Aa;
Bb;
return0;
)
這個程序的輸出結(jié)果是_____0
33.在面向?qū)ο蠓椒ㄖ?描述的是具有相似屬性與操作的一組對
象。
34.診斷和改正程序中錯誤的工作通常稱為。
35.C++語言的基本控制結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和【】°
四、程序改錯題(10題)
36.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
public:
I********enor********/
staticintn=O:
CO
n++:
)
CO
n—:
)
):
!********enor********/
intCO::n;
voidmain
COobj;
COobj2f7];
CO*C=NULL:
c=&obj:
I********error********/
eout?C.n?endl;
cout?C0::n?endl;
37.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
throw("error");
II********error********
catch(chars)
cout?s?endl;
throw((int)0);
II********enor********
catch
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
//********error********
catch
(
cout?"ERROR"?endl;
)
retumO;
)
38.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當輸入字符“?”時,默認字符輸入結(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.0打開考生文件夾下的源程序文件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********enor********
TCobjl;
objl.Print;
TCobj2(3);
1I********error********
objl.number=10;
I!********error*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
40.使用VC++6.。打開考生文件夾下的源程序文件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
{
II********error********
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
II********eno[*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
41.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
TC;
);
II******error******
TC:TC
cout?"Constructor"?","
i=0;
)
II******error******
TC:display
tout?"i="?i<<","?endl;
)
!I******enor******
TC:TC
COUI?"Destructor"?endl:
voidmain
TCa;
a.display;
)
42.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******error******
voidmain
II******error******
intm=0142:
II******enor******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
43.使用VC++6.。打開考生文件夾下的源程序文件I.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
I********enor********/
TC(inti)
(
m_i=i;
)
voidprint
(
cout?—m_i?,;
)
public:
intm_i;
);
intmain
(
/********error********
inti;
TC04(10);
while(i>5)
I**************/
1++:
04.print;
)
cout?endl;
retumO;
44.使用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;
//********error********
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
!I********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;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
(
char*sl="abc":
II********ej*ror********
assert(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
II********enor********
assert(sizeof(s3)=4);
cout?"sizeof(s3)=l"?endl;
return;
)
五、綜合應(yīng)用題(2題)
46.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程
proj3,其中聲明的CDeepCopy是一個用于表示矩陣的類。請編寫這個
類的賦值運算符成員函數(shù)Operator:,以實現(xiàn)深層復(fù)制。
要求:
補充編制的內(nèi)容寫在“//************333************"與
“//"★"""."."...""■GGG************51c”之間o不彳修改不呈的其彳也部
分。
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為。bj文件,并且在本程序中調(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)
〃/不不*.!>""""*!>不*3不舉舉不不不舉小軍
//***********666***不*******
intmain
CDeepCopya⑵,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[0];〃顯示d數(shù)組元素a.p[0]的值
cout?”dfadeaway;\n";
cout?a.p[01;〃顯示a數(shù)組元素a.p[0]的值
,,,,
writeToFile();
return0;
47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程
proj3,其中包含了類IntegerSet和主函數(shù)main的定義。一個IntegerSet
對象就是一個整數(shù)的集合,其中包含。個或多個無重復(fù)的整數(shù);為了
便于進行集合操作,這些整數(shù)按升序存放在成員數(shù)組elem的前若干單
元中。成員函數(shù)add的作用是將一個元素添加到集合中(如果集合中不
存在該元素),成員函數(shù)remove從集合中刪除指定的元素(如果集合中
存在該元素)。請編寫成員函數(shù)remove。在main函數(shù)中給出了一組測
試數(shù)據(jù),此時程序的正確輸出結(jié)果應(yīng)為:
23452728316675
234562728315675
23456192728316675
3456192728316675
3456192728316675
要求:
補充編制的內(nèi)容寫**********333************與
“〃***********666***********"之間,不得修改程序的其他部分
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為。bj文件,并且在本程序中調(diào)用。
//IntegorSet.h
#ifndefINTEGERSET
#defineINTEGERSET
#include<iostream>
usingnamespacestd;
constintMAXELEMENTS=100;
//集合最多可擁有的元素個數(shù)
classIntegerSet{
intelem[MAXELEMENTS];
〃用于存放集合元素的數(shù)組
intcounter;〃用于記錄集合中元素個數(shù)的計數(shù)器
public:
IntegerSet:counter(0){}
〃創(chuàng)建一個空集合
IntegerSet(intdata[],intsize);
//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個整數(shù)集合
voidadd(intelement);
〃添加一個元素到集合中
voidremeve(intelement);
〃刪除集合中指定的元素
intgetCountconst{returncounter;}
〃返回集合中元素的個數(shù)
intgetElement(inti)const{returnelem[i];}〃返回集合中指定的元素
voidshowconst;
};
voidWriteToFile(char*);
#endif
//main,cpp
#include,,IntegerSet.h"
#include<inmanip>
IntegerSet::IntegerSet(intdata[],intsize):counter(0){
for(inti=0;i<size;i++)
add(data[i]);
)
)
voidIntegerSet::add(intelement){
intj;
〃從后往前尋找第一個小于等于element的元素
for(j=counter;j>0;j-)
if(element>=elem[j一l])break;
//如果找到的是等于element的元素,說明要添加的元素已經(jīng)存在,直
接返回
if(j>0)
if(element=elem[j-1])return;
//如果找到的是小于element的元素,j就是要添加的位置
〃該元素及其后面的元素依次后移,騰出插入位置
for(intk=counter;k>j;k一)
elem[k]=elem[k-1];
elem[j]=element;〃將element插入到該位置
counter++;〃計數(shù)器加1
voidIntegerSet::remove(intelement){
〃***************333***************
voidIntegerSet::showconst{
for(inti=0;i<getCount;i++)
cout?setw(4)?getElement(i);
cout?endl:
)
intmain{
intd[]={5,28,2,4,5,3,2,75,27,66,31);
IntegerSetS(d,11);S.show;
S.add(6);s.show;
S.add(19);S.show;
S.remove(2);s.show;
S.add(4);S.show;
,,,,
writeToFile();
return0;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test41_3o此工程包含一個
test41_3.cpp,其中定義了類Rectangle,但該類的定義并不完整。請按要
求完成下列操作,將程序補充完整。
(1)定義類Rectangle的私有數(shù)據(jù)成員left,top和fight,bottom,它們都
是int型的數(shù)據(jù)。請在注釋“〃**1**”之后添加適當?shù)恼Z句。
(2)添加類Rectangle的帶四個int型參數(shù)1、t、r、b的構(gòu)造函數(shù)的聲明,
并使這四個參數(shù)的默認值均為0,請在注釋“〃**2**”之后添加適當?shù)恼Z
句。
⑶添加類Rectangle的成員函數(shù)SetTopO參數(shù)為int型的t,作用為把t的
值賦給類的數(shù)據(jù)成員top,添加類Rectangle的成員函數(shù)SetBottom。參
數(shù)為int型的t,作用為把t的值賦給類的數(shù)據(jù)成員bottom,請在注釋
“〃**3**”之后添加適當?shù)恼Z句。
(4)完成派生類Rectangle的成員函數(shù)Show。的定義,使其以格式“right-
bottompointis(right,bottom)”輸出,請在注釋“〃**4**”之后添加適當?shù)?/p>
語句。
源程序文件test41_3.cpp清單如下:
#include<iostream.h>
classRectangle
H(**]**
intright,bottom;
public:
H**2**
?Rectangle(){};
voidAssign(int1,intt,intr,intb);
voidSetLeft(intt){left=t;}
voidSetRight(intt){right=t;}
H**3**
voidSetBottom(intt){bottom=t;}
voidShow();
);
Rectangle::Rectangle(int1,intt,intr,intb)
{''
left=1;top=t;
right=r;bottom=b;
)
voidRectangle::Assign(int1,intt,intr,intb)
{’「
left=1;top=t;
right=r;bottom=b;
)
voidRectangle::Show()
(
cout<<"left-toppointis("<<left<<<<top<<")"<<'\n';
〃**4**
)
voidmain()
{
Rectanglereel;
rect.Show();
rect.Assign(100,200,300,400);
rect.Show();
49.使用VC6打開考生文件夾下的工程test42_3o此工程包含一個
test42_3.cpp,其中定義了類Cpolygon、COutput和CTriangle,其中
CTriangle類由Cpolygon和COutput類public派生,但三個類的定義并
不完整。請按要求完成下列操作,將程序補充完整。
⑴定義類CPolygon的保護數(shù)據(jù)成員width和height,它們都是int型的
數(shù)據(jù)。請在注釋“〃**1**”之后添加適當?shù)恼Z句。
⑵完成類CPolygon的成員函數(shù)set_values(inta,intb),使參數(shù)a和b分
別賦值給保護數(shù)據(jù)成員width和height,請在注釋“〃**2**”之后添加適
當?shù)恼Z句。
(3)完成類Coutput的成員函數(shù)output(int)的定義將傳入的參數(shù)為血型
的i輸出到屏幕并換行,請在注釋“〃**3**”之后添加適當?shù)恼Z句。
(4)完成派生類CTriangle的聲明,它由Cpolygon和COutput類public派
生,請在注釋“〃**4**”之后添加適當?shù)恼Z句。
源程序文件test42_3.cpp清單如下:
#include<iostream.h>
classCPolygon
(一
protected:
〃**]**
public:
voidset_values(inta,intb)
{
H**2**
)
);
classCOutput
(
public:
voidoutput(inti);
);
voidCOutput::output(inti)
〃**3**
}
〃**4**
public:
intarea(void)
(
return(width*height/2);
)一
)
intmain()
CTriangletrgl;
trgl.set_values(4,5);
trgl.output(trgl.area());
return0;
參考答案
LA
\n在C語言中軟件概要設(shè)計的基本任務(wù)是:設(shè)計軟件系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)
構(gòu)及數(shù)據(jù)庫設(shè)計、編寫概要設(shè)計文檔、概要設(shè)計文檔評審4種。
\n
2.D在C中的虛函數(shù)是一種單界面多實現(xiàn)版本的實現(xiàn)方法,即函數(shù)名、
返回類型、函數(shù)類型和個數(shù)順序完全相同,但函數(shù)體內(nèi)容可以完全不同。
3.B解析:按照C++語言的數(shù)組元素的引用方法,如數(shù)組元素a[0],
可以用表達式*(p+0),即
*p來引用,對于數(shù)組元素a[l],可以用表達式*(p+1)來引用,在
這里,P+1的值就是數(shù)組元素a[l]的地址,對此地址使用“間接訪問運
算符”:*(p+l)就代表存儲單元a[l],注意一對圓括號不可少。同樣,
對于數(shù)組元素a[2],則可以用表達式*(p+2)來引用…,對于數(shù)組元
素a[9],可以用表達式*(p+9)來引用。因此,當指針變量p指向a
數(shù)組的起始地址時,若0胃<10,則數(shù)組元素a[i]可以用表達式*(p+
i)來引用。
4.B解析:二分查找的具體過程為:將x與線性表的中間項進行比較,
若中間項的值等于x,則說明查到,查找結(jié)束:若x小于中間項的值,
則性表的前半部分(即中間項以前的部分)以相同的方法進行查找:若X
大于中間項的值,則性表的后半部分(即中間項以后的部分)以相同的方
法進行查找。這個過程一直進行到查找成功或子表長度為0(說明線性表
中沒有這個元素)為止。由此可知,有序線性表/頃序存儲時才能采用二
分查找。所以,本題的正確答案為B。
5.D
6.D解析:程序設(shè)計語言是用于書寫計算機程序的語言,其基本成分有
以下4種,數(shù)據(jù)成分:用來描述程序中的數(shù)據(jù)。運算成分:描述程序中所
需的運算。控制成分:用來構(gòu)造程序的邏輯控制結(jié)構(gòu)。傳輸成分:定義數(shù)
據(jù)傳輸成分,如輸入/輸出語言。
7.B解析:本題考查的知識點是遞歸函數(shù)的調(diào)用。根據(jù)程序代碼逐步分
析:
①f(n)用來計算n+(n-l)...+l,在f(n)定義內(nèi)部又調(diào)用f(n)自身,這就是
遞歸函數(shù)。
②f(n)=f(n-l)+l,因此必須先計算出f(n-l),而f(n-l)=f(n-2)+l,又必須
計算f(n-2)o
由此類推,直到n=l,返回后可以此計算出f(n),f(n-l),…f(l)。
③第1次調(diào)用f(n)時,形參n接收的值為1,進入函數(shù)體后,由于滿足
“n=l",執(zhí)行return語句得到1。第2次調(diào)用f(n)時,n的值為2,不滿
足條件“n==l”,執(zhí)行returnf(n-1)+1,在這條語句中又調(diào)用f(n-l)即f(l),
從而得到f(2)的返回值為2。所以j=l+2=3。
8.D解析:通常,引用一個數(shù)組元素可以用下標法,如a[P-a]形式,或
指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,
注意,數(shù)組的下標是從。開始的。
9.C
解析:本題考查的知識點是:字面常量。對于整型字面常量,只要沒
有超出C++中整數(shù)所能表示的范圍,C++將自動按整數(shù)(int)來存儲此
數(shù)。也可以通過在整型字面常量后添加u或1(大、小寫均可),來指定
按無符號整數(shù)(unsigned)或長整數(shù)(long)來存儲,也可同時使用u和
1(對排列無要求),來指定按無符號長整數(shù)(unsigned\u3OOOlong)來存
儲。對于實型字面常量,C++自動按雙精度數(shù)(double)來存儲。也可通
過在實型字面常量后添加f(大、小寫均可),來指定按單精度數(shù)(float)來
存儲。故本題應(yīng)該選擇C。
10.C解析:本題考查友元函數(shù)的應(yīng)用。程序中函數(shù)square是類sample
的一個友元函數(shù),它可以直接訪問類sam-pie的所有成員。它的功能是
返回類sample的私有數(shù)據(jù)成員x的平方。所以程序的執(zhí)行結(jié)果是900。
H.C解析:運算符函數(shù)可以重載為成員函數(shù),也可以重載為非成員函數(shù),
如重載為友元函數(shù)。
12.A
算法的有窮性,是指算法必須能在有限的時間內(nèi)做完,即算法必須能
在執(zhí)行有限個步驟之后終止。
13.A算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以
選擇A項。
14.C
派生類可以訪問基類的保護成員,而不能訪問基類的私有成員。作為
虛基類的類可以被實例化。虛函數(shù)如果沒有派生類中重新實現(xiàn),那么
仍然使用基類的成員函數(shù)。
15.A
Ao【解析】本題考查混合運算表達式類型,由表達式中具有最高優(yōu)先
級的類型所確定,所以答案為A。
16.A
解析:本題考查的是if語句。if語句的條件部分是一個表達式而不是
語句,因此選項A的說法不正確。
17.B
本題考查基類和派生類的邏輯關(guān)系,屬于基礎(chǔ)知漢,如果沒有指明哪
種繼承方式,那么默認為私有繼承,所以B選項錯誤。
18.D
19.A
20.C
本題考查默認構(gòu)造函數(shù),當i=0、1時,fun(Sample⑴)為1;當i=2
時,fun(Sample(i)l為2;當i=3時,fun(Sample⑴)為6;當i=4時,
fun(Sample⑴)為24;當i=5時,fun(Sample⑴)為120。所以總和為154
21.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、
判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)
都是詳細設(shè)計的常用工具,不是需求分析的工具。
22.A解析在C++中,成員函數(shù)可以是內(nèi)聯(lián)函數(shù),也可以是非內(nèi)聯(lián)函數(shù)。
在類定義體內(nèi)定義和實現(xiàn)的函數(shù)都是內(nèi)聯(lián)函數(shù)。在類定義體外實現(xiàn)的函
數(shù)可以通過在函數(shù)說明和定義上分別加上inline來表示該函數(shù)是內(nèi)聯(lián)函
數(shù),否則就不是內(nèi)聯(lián)函數(shù)。
23.B
24.ios
25.不能是表達式不能是表達式解析:引用是變量的別名,其實質(zhì)是變
量的地址。return在返回值時,如果其后為表達式,則系統(tǒng)為該表達式
生成一個臨時變量用于存放該表達式的結(jié)果,函數(shù)執(zhí)行完畢之后該變量
被系統(tǒng)回收,因此,返回的該變量的地址對調(diào)用函數(shù)來說已經(jīng)沒有意義
了。
26.public
27.模板函數(shù)模板函數(shù)
28.6位6位
29.virtualintA()=0;virtualintA()=0;解析:C++語言中的純虛函數(shù)是
一種特殊的函數(shù),它沒有自己的定義,只有聲明,純虛函數(shù)與虛函數(shù)聲
明的不同就在于在函數(shù)后面加上了“=0”。
3O.n-l
31.m=a[i]
32.AAB
33.類類
34.程序調(diào)試程序調(diào)試
35.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)解析:C++語言3種基本結(jié)構(gòu)就是順序結(jié)構(gòu),選
擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。
36.(1)“staticintn=O"應(yīng)改為"staticintn;"。
(2)uintC0::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;
37.(1)應(yīng)改為"catch(char*s)”。
⑵應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為"catch(…)”。
【解析】本題中第1個標識前的異常拋出語句為“throw("error");",其
中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類
型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語
句修改為“catch(char*S)”°第2個標識前的異常拋出語句為
“throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號"…''表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
38.(1)應(yīng)改為“ein.getline(str,120,?);
\n⑵應(yīng)改為"while(str[i])”。
,,
\n⑶應(yīng)改為"if(str[i]>=a&&str[i]<=2)o
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個
數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);"。第
2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是否為結(jié)
束符,若不是結(jié)束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,
則轉(zhuǎn)換。所以應(yīng)該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是
判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,
,,
但是小寫字符應(yīng)該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)o
39.(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,所以補全參數(shù)1,即第1處的“TCobjl⑴;“。第2處處的
“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中
成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);"。類是對象的抽象,而對象是類的具體實例。
第3處=(2.5611^111加61'(10());”語句中的丁(2為類,并不是對象,這里
應(yīng)該使用定義的對象,即obj2,所以將語句修改為
“obj2.SetNumber(lOO);"。
40.⑴應(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,所以補全參數(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);
41.(1)應(yīng)改為“TC::TC”。
(2)應(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”。
42.(l)“voidmain”。
(2)“intm=0144;
(3)“intn=OX25;”或“intn===0x25;
【解析】本題主要考查了主函數(shù)定義及塞同進制之間的轉(zhuǎn)換,包括十
進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為
“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。
cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)
現(xiàn)變量的初值不正確,十進制的100對應(yīng)八進制的144,卡進制的37
對應(yīng)十六進制的25,因此2和3應(yīng)分別改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
43.(1)應(yīng)添加“public:
\n(2)“inti”應(yīng)改為"inti(10);
\n(3)“i++廠'應(yīng)改為“i—;
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、
保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類
的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠區(qū)日常保潔服務(wù)合同范本
- 協(xié)議鋼板銷售合同范本
- 廠家房車租賃合同范本
- 壓本不押車合同范本
- 使用林地合同范本
- 個體餐飲勞動合同范本
- 公司民間借貸合同范本
- 《圓的周長》教學反思
- 山東省德州市五校2024-2025學年高二上學期期末聯(lián)考語文試題
- 產(chǎn)品租賃押金合同范本
- 2024年世界職業(yè)院校技能大賽高職組“聲樂、器樂表演組”賽項參考試題庫(含答案)
- 2024年共青團入團考試題庫及答案
- 2024解析:第十二章機械效率-講核心(原卷版)
- 2023年國家公務(wù)員錄用考試《申論》真題(副省卷)及答案解析
- 2023年海南省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2024-2030年中國語言培訓行業(yè)競爭分析及發(fā)展策略建議報告版
- 2024-2030年中國醫(yī)療器械維修設(shè)備行業(yè)供需狀況及發(fā)展策略分析報告
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
- 女性健康知識講座課件
- DB11T 1787-2020 二氧化碳排放核算和報告要求 其他行業(yè)
- 企業(yè)網(wǎng)絡(luò)安全管理規(guī)范作業(yè)指導書
評論
0/150
提交評論