




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年甘肅省隴南市全國計算機等級考試
C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.有如下表達(dá)式19/30*.sqrt(4.0)/5,則該表達(dá)式值數(shù)據(jù)類型為。
A.intB.floatC.doubleD.不確定
2.設(shè)有語句:charstrl[]="string",str2[8],*str3,*str4="string";則下列對
庫函數(shù)strcpy()調(diào)用不正確的是()o
A.strcpy(strl,"HeliO1");
B.strcpy(str2,"HellO2");
C.strcpy(str3,"HellO3");
D.strcpy(str4,"HellO4");
3.在軟件設(shè)計中,不屬于過程設(shè)計工具的是()。
A.PDL(過程設(shè)計語言)B.PAD圖C.N-S圖D.DFD圖
4.存在定義inta[10],x,*pa;,若pa=&a[0],下列的哪個選項和其他3
個選項不是等價的?
A.x=*pa;B.x=*(a+1);C.x=*(pa+1);D.x=a[l];
5.以下程序執(zhí)行后的輸出結(jié)果是()。#include<iostream>using
namespacestd;voidtry(int,int,int,int);intmain(){intx,y,z,r;x=l;y=2;
try(x,y,z,r);cout<<r<<endl;return0;}voidtry(intx,inty,intz,intr){z
=x+y;X=x*x;y=y*y;r=z+x+y;}
A.18B.9C.10D.不確定
6.類MyClass的定義如下,若要對value賦值,則下面語句正確的是
()O
classMyClass
(一
public:
MyClass(){}
MyClass(inti){value=newint(i);}
int*value;
};
A.MyClassmy;my.value=10;
B.MyClassmy;*my.value=10;
C.MyClassmy;my.*value=10;
D.MyClassmy(lO);
7.下面程序的輸出結(jié)果為()。#inelude<iostream.h>voidmain(){int
x;int&y=x;〃變量弓|用y=99;cout<<"x="<<x<<endl;}
A.x=99B.x=9C.x=0D.異常
8.將ER圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成()。
A.屬性B.關(guān)系C.鍵D.域
9.下列關(guān)于C++流的敘述中,錯誤的是
A.cout>>A表達(dá)式可以輸出字符A
B.eof()函數(shù)可以檢測是否到達(dá)文件尾
C對磁盤文件進(jìn)行流操作時,必須包含頭文件fstream
D.以ios_base::out模式打開的文件不存在時,將自動建立一個新文件
10.下列說法中錯誤的是()。
A.公有繼承時基類中的public成員在派生類中仍是public的
B.公有繼承時基類中的private成員在派生類中仍是private的
C.私有繼承時基類中的public成員在派生類中是private的
D.保護(hù)繼承時基類中的public成員在派生類中是protected的
二、單選題(13題)
11.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項
是
A.a,point,*&a
B.&*a,&a,*point
C.*&point,*point,&a
D.&a,&*point,point
12.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是
A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
13.假設(shè)下列語句都是程序運行后首次執(zhí)行的輸出語句,其中輸出結(jié)果
與另外三條語句不同的語句是0
A.cout<<setfillC*')<<123<<setw(9)<<321;
B.cout<<setfill('*')<<setw(6)<<left<<123<<setw(6)<<right<
<321;
C.cout<<123<<setfillC*')<<setw(6)<<321;
D.coutV<setfin('*')<<setw⑼<<left<<123<<321;
14.有下列程序:
#include<stdiO.h>
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i<N,i++)b[i]=a[i][i];
)
voidmain()
{intx[][N]={{l,2,3},{4},{5,6,7,8),{9,10}),
y[N],i;
fun(x,y);
fbr(i=O;i<n;i++)printf("%d,",y[i]);
printf("\n");
程序的運行結(jié)果是()oA.1,2,3,4,B.1,0,7,0,C.1,4,5,9,
D.3,4,8,10,
15.判斷char型變量c是否為小寫字母的正確表達(dá)式是
A.'a'<=c<='z'
B.(c>=A)&&(c<=z)
C.,a'>=c)||(2<=c)
D.(c>='a')&&(c<='z')
16.下列關(guān)于虛基類的描述,錯誤的是()。
A.設(shè)置虛基類的目的是為了消除二義性
B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用
C.若同一層中包含多個虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次
序調(diào)用
D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用
派生類的構(gòu)造函數(shù)
17.有如下程序:
#include<iostream>
#include<iomanip>
usingnamespacestd;
intmain(){
cout<<left<<setw(4)<<123<<"OK"<<
endl;
return0;
)
程序的輸出結(jié)果是
A.123*OKB.123*OK**C.*123OKD.*123**OK
18.下列程序是用來判斷數(shù)組中特定元素的位置所在,則輸出結(jié)果為
#include<conio.h>#include<iostream.h>intfun(int*s,intt,int*k){int
i;*k=0;for(i=0;i
A.7,431B.6C.980D.6,980
19.從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是()o
A.概要設(shè)計與詳細(xì)設(shè)計B.數(shù)據(jù)設(shè)計與接口設(shè)計C.軟件結(jié)構(gòu)設(shè)計與數(shù)
據(jù)設(shè)計D.過程設(shè)計與數(shù)據(jù)設(shè)計
20.程序段“intx=12;doubley=3.141593;printf("%d%8.6f",X,y);”
的輸出結(jié)果是()o
A.123.141593B.123.141593C.12,3,141593D.123.1415930
21.有如下程序:
#included<iostream>
usingnamespacestd;
voidfl(int&X,int&y){intz=x;x=y;y=z;)voidf2(intX,inty){intz=x;
x=y;y=z;Jintmain(){
intx=10,y=26;
fl(x,y);
f2(x,y);
cout?y?endl;
returnO;
)
運行時的輸出結(jié)果是()oA.10B.16C.26D.36
22.有以下程序:
classDate
(
public:
Date(inty,intm,intd);
(
year=Y:
month=m;
day=d;
)
Date(inty=2OOO)
(
year=y;
month=10;
day=l;
}
Date(Date&d)
(
year=d.year;
month=d.month;
day=d.day;
)
voidprint()
(
cout?year?"."<(month?"."?day?endl;
)
private:
intyear,month,day;
};
Datefun(Dated)
(
Datetemp;
temped;
retumtemp;
)
intmain()
{
Datedatel(2000,1,1),date2(0,0,0);
Datedate3(datel);
date2=fun(date3);
retumO;
}
程序執(zhí)行時,Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
23.下列描述中,不屬于面向?qū)ο笏枷胫饕卣鞯氖莖
A.封裝性B.跨平臺性C.繼承性D.多態(tài)性
三、2.填空題(12題)
24.下列程序?qū)犹栠M(jìn)行了重載,劃線部分的語句是【】。
#include<iostream,h>
#include<math,h>
classTriangle
{,
intx,y,z;
doublearea;
public:
Triangle(inti,intj,intk)
(
doubles;
x=i;y=j;z=k;
s=(x+y+z)/2.0;
area=sqrt(s*(s-x)*(s-y)*(s-z));
}
voiddisparea()
(
cout<<"Area="<<area<<endl;
)
frienddoubleoperator+(Triangletl,Trianglet2)
{\
);
voidmain()
(
Triangletl(3,4,5),t2(5,12,13);
doubles;
cout<<"tl:";tl.disparea()
cout<<"t2:";t2.disparea()
s=tl+t2;
tout<〈"總面積:="<<s<<end];
25.如果類B繼承了類A,則稱類A為類B的基類,類B稱為類A的
[lo
26.設(shè)一棵二叉樹的中序遍歷結(jié)果為ABCDEFG,前序遍歷結(jié)果為
DBACFEG,則后序遍歷結(jié)果為【】。
27.以下程序的輸出結(jié)果是【】。
#include<iostream.h>
classobject
{private:
intval;
public:
object();
object(inti);
~object();};
object::object()
{val=0;
cout<<"Defaultconstructorforobject"<<endl;}
object::object(inti)
{val=i;
cout<<"Constructorforobject"<<val<<endl;}
object::~object()
{cout<<"Destructorforobject"<<val<<endl;}
classcontainer!private:
objectone;
objecttwo;
intdata;
public:
container();
container(inti,intj,intk);
?container();};
container::container()
{data=0;
cout<<"Defaultconstructorforcontainer"<<endl;}
container::container(inti,intj,intk):two(i),one(j)
{data=k;
cout<<"Constructorforcontainer"<<endl;}
container::~container()
{cout<<"Destructorforcontainer"<<endl;}
voidmain()
{containeranObj(5,6,10);}
28.作為成員函數(shù)重載的運算符,第一操作數(shù)就是參數(shù)表中隱含的
所指向的對象,因此并不顯示地出現(xiàn)在參數(shù)表中。
29.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程
稱為【】。
30.在有序列表(3,6,8,10,12,15,16,18,21,25,30)中,用二
分法查找關(guān)鍵碼值12,所需的關(guān)鍵碼比較次數(shù)為【】。
31.operator是運算符重載時必須使用的關(guān)鍵字,它和被重載的運算符連
在一起,作為運算符函數(shù)的專用函數(shù)名,務(wù)必把該函數(shù)說明為的。
32.以下程序的執(zhí)行結(jié)果為【】。
#include<iostream>
usingnamespacestd;
voidoverload(intnum)
(
cout<<num<<endl;
)
voidoverload(charch)
{
charc=ch+1;
cout<<c<<endl;
)
intmain()
(
overload('X');
return0;
)
33.設(shè)inta=10,b=ll,c=12;,表達(dá)式(a/b)<c&&b==c的值是[]o
34.非成員函數(shù)應(yīng)該聲明為類____函數(shù)才能訪問該類的私有成員。
35.在深度為5的完全二叉樹中,度為2的結(jié)點數(shù)最多為【】。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
-TC;
};
1I******error******
TC:TC
(
cout?"Constructor"?",
i=0;
)
II******error******
TC:display
(
tout?"i="?i<<","?endl;
}
II******error******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
{
TCa;
a.display;
}
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(S1)=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":
//、卜、1*、!>
//不不不不不不不個prrcr個不個不不不不不
assert(sizeof(s1)==3):
cout?"sizeof(s1)=5"?endl;
chars2[10]="ab":
II********error********
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
/*1**1**1**4*
//不不不不不不不個prrcr不不不不不不不小
assert(sizeof(s3)==4);
cout?"sizeof(s3)=1"?endl;
return;
38.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
!!******enor******
voidmain
II******error******
intm=0142:
II******error******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
39.使用VC++6.0打開考生文件夾下的源程序文件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;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
!1********error********
cin.getline(str,120);
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
cout?str?endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******白勺_?力。j
試題程序:
#include<iostream>
#include<fstream>
IJ********error*********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
/*1**1**1**1**1**4**.!?*1**1**1**1,*2**1*、1,
//小不不個不不不個m?cr個不不不個不不小
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.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
{
I!********error********
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
I!********enor*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
public:
********error********
staticintn=O:
CO
(
n++:
)
?CO
(
n—:
)
):
I********error********
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
/********error********
eout?C.n?endl;
cout?C0::n?endl;
44.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
throw("error");
!I********error********
catch(chars)
cout?s?endl;
throw((int)0);
II********error********
catch
cout?i?endl;
)
try
(
throw(O);
throw("error");
}
I!********enor********
catch
(
cout?"ERROR"?endl;
)
retumO;
)
45.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h)
intmain
{
try
throw("error");
catch(chars)
(
cout?s?endl;
)
try
(
throw((int)0);
)
II********error********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
catch
(
cout?"ERROR"?endl;
)
retumO;
五、綜合應(yīng)用題(2題)
46.使用VC++6.。打開考生文件夾下的源程序文件3.cpp。其中定
義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出
一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及
總個數(shù),同時允許退貨,請按照以下的操作,把類補充完整。
⑴定義類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,然后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)
AllWeight+=w:
AllNo++:
)
?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;
)
47.使用VC++6.0打開考生文件夾下的源程序文件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
(
};
///*!>*1***1*'*I,**1***1**1**"**1***1**1***.!***1***1**
classCl:
public:
voidprint
(
cout<",,Cl"<<endl;
)
};
//********3********
classC2:
{
public:
voidprint
(
cout<<"C2"<<endl;
)
};
/I********4***x****
classC3:
(
public:
voidprint
(
cout<<"C3"<<endl;
)
};
voidmain
(
C3Obj3;
C20bj2;
obj3.print;
obj2.print;
return;
)
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test29_3o此工程包含一個
test29_3.cpp,其中定義了二維坐標(biāo)類Coordinate和三維坐標(biāo)類
ThreeDCoord,其中ThreeDCoord類由Coordinate類public派生,但兩
個類的定義并不完整。請按要求完成下列操作,將程序補充完整。
⑴定義類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),補充該函數(shù)在
類Coordinate定義體內(nèi)的聲明,Display為二維坐標(biāo)類的虛函數(shù)。請在注
釋“〃**2**。”之后添加適當(dāng)?shù)恼Z句。
⑶完成二維坐標(biāo)類Coordinate的構(gòu)造函數(shù),將參數(shù)a和b分別賦值給數(shù)
據(jù)成員x和V。請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
(4)根據(jù)ThreeDCoord類構(gòu)造函數(shù)的聲明,補充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();
1.Display();
)
49.使用VC6打開考生文件夾下的工程MyProjl4。此工程包含一個源程
序文件MyMainM.cpp,程序中定義了3個類A、B和C,但類的定義并
不完整。
請按要求完成下列操作,將類的定義補充完成:
①類A的成員函數(shù)setx(inti,intj)是虛函數(shù),其實現(xiàn)的功能是將類A的
保護(hù)成員x和y分別設(shè)置成i和j并且y具有默認(rèn)值0。請在注釋“//*
*1**"之后添加適當(dāng)?shù)恼Z句。
②將類A的成員函數(shù)print。聲明成員純虛函數(shù)。請在注釋“〃**2**”之
后添加適當(dāng)?shù)恼Z句。
③完成類A的保護(hù)數(shù)據(jù)成員x和y的定義,它們都是整型變量。請在注
釋,,〃**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件MyMainl4.cpp清單如下:
//MyMainl4.cpp
#include<iostream>
usingnamespacestd;
classA
(
public:
//***]***
〃***2***
protected:
〃***3***
);
classB:publicA
(
public:
voidprint()
{
cout<<X*X<<",
};
classC:publicA
(
public:
voidprint()
(
cout<<x*x*x<<endl;
}
);
intmain()
{
A*pa;
Bb;
Cc;
pa=&b;
pa->setx(5);
pa->print();
pa=&c;
pa->setx(2);
pa->print();
return0;
)
參考答案
l.C
2.C解析:本題考核庫函數(shù)strcpy()的正確調(diào)用。函數(shù)strcpy()的函數(shù)原
型為:
char*strcpy(char*strDest,constchar*strSrC);
其功能是復(fù)制strSrc所有字符到strDest,并返回strDesto
根據(jù)函數(shù)strcpy。的原型可知,選項A、B和D的調(diào)用都是正確的。在
選項C中,由于指針*str3沒有初始化其字符長度,容易引起訪問越界,
故是不正確的。
3.D解析:PDL一種設(shè)計性語言,用于書寫軟件設(shè)計規(guī)約。它是軟件設(shè)
計中廣泛使用的語言之一。N-S圖是無線的流程圖,是算法描述工具;
PAD圖是問題分析圖,它用二維樹狀結(jié)構(gòu)的圖表示程序的控制流,將這
種圖轉(zhuǎn)換為程序代碼比較容易。此3類均是過程設(shè)計工具,數(shù)據(jù)流圖
(DataFunctionDiagram):又名數(shù)據(jù)功能圖表,簡稱DFD,是采用圖形方
式來表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,
是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖
示方法。
4.A解析:本題考查的是數(shù)組和指向數(shù)組的指針之間的關(guān)系,選項A)中
x是被數(shù)組a的第一個元素賦值,其余的都是被數(shù)組a的第二個元素賦
值。
5.D解析:本題考核函數(shù)調(diào)用(參數(shù)的傳遞)。本題常見的錯誤解答是:把
x=l,y=2代入到函數(shù)try中,逐步計算出r=8。最后得到r的輸出值是
8o以下是正確解答,根據(jù)程序逐步分析:程序中定義了一個名為try的
void型函數(shù),即函數(shù)try沒有任何返回值。而try函數(shù)在main函數(shù)中是
以一條獨立語句的方式被調(diào)用的,且main函數(shù)最后輸出變量r的值。
但在main函數(shù)中,并沒有對變量r賦值。在C++語言中,數(shù)據(jù)只能從實
參單向傳遞給形參,稱為按值傳遞。也就是說,當(dāng)簡單變量作為實參時,
用戶不能在函數(shù)中改變對應(yīng)實參的值。所以雖然在函數(shù)try中,r的值為
8,但它并不能傳遞給實參,當(dāng)然最終的輸出肯定是不確定的隨機數(shù)了。
6.DD。【解析】因題目中定義的指針value是指淘變量i的,所以直接利
用語句MyClass(inti){value=newint(i);}對value進(jìn)行賦值即可。
7.A
8.B解析:在關(guān)系模型中,無論是從客觀事物中抽象出的實體,還是實
體之間的聯(lián)系,都用單一的結(jié)構(gòu)類型關(guān)系來表示。在對關(guān)系進(jìn)行各種處
理之后,得到的還是關(guān)系,一張新的二維表。
9.A解析:COHt流對象后面跟的應(yīng)該是插入運算符“〈<”而不是提取
運算符“>〉,,,故選項A錯。
10.B解析:公用繼承時基類中的公用成員和保護(hù)成員在派生類中保持原
有訪問屬性,其私有成員仍為基類私有。私有繼承時,基類的公有成員
和保護(hù)成員在派生類中成了私有成員,其私有成員仍為基類私有。受保
護(hù)的繼承時,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其
私有成員認(rèn)為基類私有。
H.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型
指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量
指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。
在選項A中,很顯然,不全是地址,只有point表示地址,而*&a等價
于*(&a),表示取一個數(shù)值。
在選項B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地
址。
在選項C中,與選項B類似,其中的*point表示數(shù)值。
在選項D中,都表示地址,是題目的選擇答案。
12.C
根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)
據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶
鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。
13.C
本題主要考查了輸出格式控制。操縱符setw為緊隨其后的輸出項指定
輸出寬度,在一個域輸出完后,域?qū)挾然謴?fù)成它的默認(rèn)值0,輸出項默
認(rèn)對齊方式為右對齊,操縱符setfill的作用是設(shè)置填充字符。因此選
項A、B、D的輸出結(jié)果都為123******321,選項C的輸出結(jié)果為
123***321。
14.B
Bo【解析】本題考查數(shù)組的初始化,在對二維數(shù)組元素賦初值時,如
果只對部分元素賦初值,那未賦初值的元素自動取0。fun函數(shù)是將二
維數(shù)組a中主對角線上的元素賦給數(shù)組b,所以y[4]=(l,0,7,0)o
15.D
解析:字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母
和小寫字母在ASCII碼表中都是連續(xù)的。大寫字母A?Z是從65?
90,小寫字母a?z是從97—122。所以只要變量c大于等于a并且等
于小于2就能保證其為小寫字母。
16.B
Bo【解析】虛基類的引入就是為了消除二義性,其構(gòu)造函數(shù)的調(diào)用仍
然是按照繼承的順序進(jìn)行的,對于多個虛基類則按它們說明的次序調(diào)
用,虛基類的構(gòu)造函數(shù)先于非虛基類的構(gòu)造函數(shù)執(zhí)行。
17.A
解析:本題考查了輸出流的格式控制。cout的fin()方法的作用是設(shè)置
填充字符,若輸出數(shù)據(jù)寬度小于設(shè)置寬度,則空閑位置用填充字符填
滿。left和endl是C++預(yù)定義的用于格式控制的符號常量,前者使輸
出數(shù)據(jù)在指定寬度內(nèi)左對齊,后者使輸出換行。setw()函數(shù)的作用是設(shè)
置輸入輸出寬度,不過寬度設(shè)置的效果只對一次輸入或輸出有效,在
完成了一個數(shù)據(jù)的輸入或輸出后,寬度設(shè)置自動恢復(fù)為0(表示按數(shù)據(jù)
實際寬度輸入輸出)。所以在本題中,輸出整數(shù)123時寬度為4且左對
齊,空出最后一位填入填充字符結(jié)果是123*:輸出字符串"0不時
寬度自動恢復(fù)為0,結(jié)果是OK。故程序的輸出結(jié)果是123*OK,應(yīng)該
選擇Ao
18.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針
運算,此外,一開始應(yīng)認(rèn)為*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。
19.A
解析:從工程管理的角度看,軟件設(shè)計可分為概要設(shè)計和詳細(xì)設(shè)計兩
大步驟。概要設(shè)計是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架;詳細(xì)設(shè)計
是將其進(jìn)一步精化成軟件的算法或表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概
要設(shè)計和詳細(xì)設(shè)計又由若干活動組成,包括總體結(jié)構(gòu)設(shè)計/數(shù)據(jù)設(shè)計和
過程設(shè)計。因此,本題的正確答案是A。
20.A
Ao【解析】根據(jù)輸出函數(shù)printf中對輸出數(shù)值格式的要求,第一個數(shù)
和第二數(shù)之間沒有空格或分隔號,因而此題答案為選項A。
21.A
Ao【解析】該題考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳
遞,引用傳遞時x和y會交換,而值傳遞時二者不交換,因此選10。
22.B\nBo【解析】本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)
一共被調(diào)用了3次:第1次是在執(zhí)行語句Datedate3(datel)時,用已經(jīng)建
立的對象datel對正在建立的對象date3進(jìn)行初始化;第2次是在調(diào)用
fun函數(shù)時,由于是傳值調(diào)用,因此實參對象date3要對形參對象d進(jìn)行
初始化;第3次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系統(tǒng)
初始化一個匿名對象時使用了拷貝構(gòu)造函數(shù)。
\n
23.B
解析:面向?qū)ο笏枷氲?個主要特征是:封裝性、繼承性和多態(tài)性。
其中封裝性是指將數(shù)據(jù)和算法捆綁成一個整體,這個整體就是對象,
描述對象的數(shù)據(jù)被封裝在其內(nèi)部;繼承性是指一種事物保留了另一種
事物的全部特征,并且具有自身的獨有特征:多態(tài)性是指當(dāng)多種事務(wù)
繼承自一種事物時,同一種操作在它們之間表現(xiàn)出不同的行為。
24.return11.area+t2.area;return11.area+t2.area;解析:符號重載時往往采
用的方法是對對象中的每個成員分別處理,封裝之后體現(xiàn)出對象參與運
算的現(xiàn)象。
25.派生類派生類解析:如果類A為類B的基類,那么類B稱為類A
的派生類。
26.ACBEGFDACBEGFD解析:由于在前序遍歷中首先訪問根結(jié)點,因
此,前序序列中的第一個結(jié)點為二叉樹的根結(jié)點,即D為二叉樹的根結(jié)
點。又由于在中序遍歷中訪問根結(jié)點的次序為居中,而訪問左于樹上的
結(jié)點為居先,訪問右子樹上的結(jié)點為最后,因此,在中序序列中,以根
結(jié)點(D)為分界線,前面的子序列(ABC)一定在左子樹中,后面的子序列
(EFG)一定在右于樹中。同樣的道理,對于已經(jīng)劃分出的每一個子序列
的所有結(jié)點中,位于前序序列最前面的一個結(jié)點為子樹的根結(jié)點,而在
中序序列中位于該根結(jié)點前面的結(jié)點構(gòu)成左子樹上的結(jié)點子序列,位于
該根結(jié)點后面的結(jié)點構(gòu)成右子樹上的結(jié)點子序列。這個處理過程直到所
有子序列為空為止。
根據(jù)上述道理,該二叉樹恢復(fù)的過程如下圖所示;
根據(jù)后序遍歷的方法,對該二叉樹后序遍歷的結(jié)果為ACBEGFDO
27.Constructorforobject6Constructorforobiect5Constructorforcontainer
DestructorforcontainerDestructorforobjectsDestructorfor
obiect6Constructorforobject6\r\nConstructorforobiect5\r\nConstructorfor
container\r\nDestructorforcontainer\r\nDestructorforobject5\r\nDestructor
forobiect6解析:C++語言中的構(gòu)造函數(shù)和析構(gòu)函數(shù)分別是在聲明對象
時和對象調(diào)用完畢后調(diào)用,本題中的調(diào)用就是這樣成對出現(xiàn)的。
28.this指針this指針
29.軟件生命周期軟件生命周期解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、
使用維護(hù)到停止使用退役的過程稱為軟件生命周期。
30.4
31.public
32.YY解析:本題考核函數(shù)重載。在本題中,函數(shù)overload。有兩次實
現(xiàn)。第一次實現(xiàn)中,其形參為int型;第2飲實現(xiàn)中,其形參為char型,
所以構(gòu)成了函數(shù)重載。主函數(shù)中調(diào)用overload。函數(shù)時傳遞的實參為字
符'X]所以執(zhí)行函數(shù)的第2次實現(xiàn)。輸出丫。
33.0
34.友元友元解析:友元函數(shù)是對應(yīng)于當(dāng)前類的外部函數(shù),但它可以訪
問該類的所有成員。友元函數(shù)不是當(dāng)前類的成員函數(shù),可以是另外一個
類的成員函數(shù)。在類中聲明友元函數(shù)時,需要在函數(shù)名前加關(guān)鍵字friend。
35.15
36.⑴應(yīng)改為“TC::TC”。
0⑵應(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處的語句"(:::丁^可知,顯然這里是在類外實現(xiàn)析構(gòu)函數(shù),析構(gòu)函
數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加”字符,用
采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::?TC”。
37.⑴應(yīng)改為"assert(sizeof(sl尸=4);
\n⑵應(yīng)改為"assert(sizeof(s2)=lO);”。
\n⑶應(yīng)改為"assert(sizeof(s3)=l);
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。
“assert(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,所以修改為
C4assert(sizeof(s3)=1);
38.(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;
39.(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”,默認(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.⑴應(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
41.(I)應(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("l.txt",ios::binaryIios::app);第3個標(biāo)識應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
“outl.put(s[i]);
42.⑴應(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賦值。在
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東交通學(xué)院《金融學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海南湖職業(yè)技術(shù)學(xué)院《大學(xué)信息技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南中醫(yī)藥大學(xué)《中國建筑史》2023-2024學(xué)年第二學(xué)期期末試卷
- 南方科技大學(xué)《工業(yè)通信與網(wǎng)絡(luò)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北工業(yè)大學(xué)工程技術(shù)學(xué)院《制漿造紙機械與設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江大學(xué)《經(jīng)典本草與湖湘中醫(yī)藥文化》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江幼兒師范高等專科學(xué)?!侗髅缹W(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 成都工貿(mào)職業(yè)技術(shù)學(xué)院《設(shè)計與開發(fā)課程設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古經(jīng)貿(mào)外語職業(yè)學(xué)院《地理信息工程課程設(shè)計與實踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南交通職業(yè)技術(shù)學(xué)院《空間文學(xué)與敘事》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫含答案
- 國家科技安全教學(xué)課件
- DB3301T 1088-2018 杭州龍井茶栽培技術(shù)規(guī)范
- 2010浙G22 先張法預(yù)應(yīng)力混凝土管樁
- 安徽省部分省示范中學(xué)2025屆高三第一次模擬考試英語試卷含解析
- 工程機械租賃服務(wù)方案及保障措施 (二)
- 國網(wǎng)基建安全管理課件
- 部編版初中語文7-9年級教材必背古詩詞、古文99篇詳細(xì)解析及欣賞
- DB36T 1393-2021 生產(chǎn)安全風(fēng)險分級管控體系建設(shè)通則
- 檔案三合一制度培訓(xùn)
- Unit 1 I go to school by bus. Period 4(說課稿)-2023-2024學(xué)年教科版(廣州)英語二年級下冊
評論
0/150
提交評論