




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2023年遼寧省鞍山市全國計算機等級考試
C++語言程序設(shè)計測試卷(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.以下程序的執(zhí)行結(jié)果是o#include<iostream.h>class
Sample{intx;public:Sample(){);Sample(inta){x=a;)Sample(Samplc
&a){x=a.x+1;}voiddisp(){cout<<"x="<<x<<endl;}}voidmain()
{Samplesi(2),s2(sl);s2.disp();}
A.x=2B.x=3C.x不確定D.x=0
2.下面程序的輸出結(jié)果為()。#include<iostream.h>class
CStatic{public:CStatic(){val++;}staticintval;};intCStatic::val=0;void
main(){CStaticcsl;cout<<csl.val<<,H,;CStaticcs2;CStaticcs3,
cs4;cout<<csval<<endl;}
A.14B.24C.34D.54
3.以下程序的運行結(jié)果是#include<iostream.h>voidsub(intx,inty,int
*z){*z=y-x;}voidmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);
sub(a,b,&c);coot<<a<<<<b<<<<c<<en
A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7
4.關(guān)于靜態(tài)數(shù)據(jù)成員的描述中正確的是()。
A.類的靜態(tài)數(shù)據(jù)成員不是類的所有對象共享的數(shù)據(jù)
B.類的靜態(tài)數(shù)據(jù)成員不能被類的成員函數(shù)調(diào)用
C.類的靜態(tài)數(shù)據(jù)成員不能被類的構(gòu)造函數(shù)調(diào)用
D.類的靜態(tài)數(shù)據(jù)成員必須進行初始化
5.下列描述中哪個是正確的?
A.私有派生的子類無法訪問父類的成員
B.類A的私有派生子類的派生類C無法初始化其祖先類A對象的屬性,
因為類A的成員對類C是不可訪問的
C.私有派生類不能作為基類派生子類
D.私有派生類的所有子孫類將無法繼續(xù)繼承該類的成員
6.下面賦值語句中正確的是
A.a=7+b+c=a+7;
B.a=7+b++=a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
7.最初的計算機編程語言是()。
A.機器語言B.匯編語言C.高級語言D.低級語言
8.有如下數(shù)組聲明:intnumllO];,下標(biāo)值弓I用錯誤的是()。
A.num[10]B.num[5]C.num[3]D.num[0]
9.在C++中,用于實現(xiàn)運行時多態(tài)性的是
A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.模板函數(shù)D.虛函數(shù)
10.在單項鏈表中刪除一個指定結(jié)點的后繼的時間復(fù)雜度為O
A.O(n)
B.O(nlog2n)
C.O(l)
D.OM)
二、單選題(13題)
11.設(shè)有charstr[80];以下不能將輸入數(shù)據(jù)first\nsecond\n<CR>讀取到
數(shù)組sir中的語句是
A.cin.get(str,strlen(str));
B.cin.getline(str,strlen(str));
C.cin>>str;
D.cin.read(str,strlen(str));
12.if語句的語法格式可描述為:
格式1:if(〈條件〉)〈語句〉
或格式2:if(〈條件〉)〈語句1>elseV語句2>
關(guān)于上面的語法格式,下列表述中錯誤的是
A.<條件>部分可以是一個if語句,例如if(if(a=O)...)...
B.<語句>部分可以是一個if語句,例如if(…)if(…)…
C.如果在<條件>前加上邏輯非運算符!并交換<語句1>和<語句2>
的位置,語句功能不變
D.<語句>部分可以是一個循環(huán)語句,例如if(...)while(.
13.判斷char型變量c是否為小寫字母的正確表達(dá)式是()。
AJa'<=c<='z'
B.(c>=A)&&(c<=z=
C.(*a*>=c)|K'z*<=c)
D.(c>='a')&&(c<=*/)
14.類MyCIass的定義如下:
classMvClass
(
public:
MyCIass(){value=O;}
SetVariable(inti){value=i;}
private:
intvalue;
則對下列語句序列正確的描述是()。
A.語句p=&my;是把對象my賦值給指針變量P
B.語句MyClass*P,my;會調(diào)用兩次類MyCIass的構(gòu)造函數(shù)
C.對語句*P.SetVariable(5)的調(diào)用是正確的
D.語句p->SetVariable(5)與語句my.SetVariable(5)等價
15.有以下程序:
classDate
(
public:
Date(inty,intm,intd);
(
year=Y:
month=m;
day=d;
)
Date(inty=2000)
(
yearly;
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;
temp=d;
returntemp;
)
intmain()
(
Datedatel(2000,1,1),date2(0,0,0);
Datedate3(datel);
date2=fun(date3);
returnO;
)
程序執(zhí)行時,Date類的拷貝構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
16.已知函數(shù)f的原型是“voidf(int*x,int&y);",變量vl、v2的定義是
"intvl,v2;下列調(diào)用語句中,正確的是()。
A.f(vl,v2)B.t(vl,&v2)C.f(&vl,v2)D.f(&vl,&v2);
17.對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是________。
A.參數(shù)類型B.參數(shù)個數(shù)C.返回值類型D.常成員函數(shù)關(guān)鍵字const
18.友元運算符objl>obj2被C++編譯器解釋為()。
A.operator>(obj1,obj2)
B.>(objl,obj2)
C.obj2.operator>(obj1)
D.obj1.operator>(obj2)
19.有如下程序:
#include<iostream>
#include<iomanip>
usingnamespacestd;
intmain(){
cout?setw(10)?setfill(,X,)?setprecision(8)?left;
cout?12.3456793?<<98765;
return0;
)
若程序的輸出是12.345679x98765xxxxx,則劃線處缺失的部分是
A.setw(lO)B.setfin('X')C.setprecision(8)D.right
20.設(shè)有兩個字符串p和q,求q在p中首次出現(xiàn)位置的運算稱為
()O
A.A.連接B.模式匹配C.求子串D.求串長
21.下列程序的運行結(jié)果是()。
#include<iostream.h>
classA
(
inta;
public:
A(a=O;}
A(intaA.
(
a=aa;
cout?a++:
)
};
voidmain
(
AX,Y(2),z(3);
cout?end
A.00B.23C.34D.25
22.下面是重載為非成員函數(shù)的運算符函數(shù)原型,其中錯誤的是
A.Fractionoperator+(Fraction,Fraction);
B.Fractionoperator-(Fraction);
C.Fraction&perator=(Fraction&,Fraction);
D.Fraction&operator+=(Fraction&,Fraction);
23.設(shè)int&max(int&,int&)返回兩參數(shù)中較大者,如有兩整型變量inta=5;int
b=10;在執(zhí)行max(a,b)++后,a,b的值分別為
A.5,10B.6,10C.5,11D.6.11
三、2.填空題(12題)
24.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個【
25.繼承與【】機制,是面向?qū)ο蟪绦蛑袑崿F(xiàn)重用的主要手段。
26.設(shè)inta=10,b=l1,c=12;,表達(dá)式(a/b)<c&&b==c的值是[]o
27.已知:doubleA(doubleA){return++a;}和intA(inA){retum++a;}
是一個函數(shù)模板的兩個實例,則該函數(shù)模板定義為【】
28.請定義一個函數(shù)名為A,返回值為int,沒有參數(shù)的純虛函數(shù)的定義
是【】。
29.在程序設(shè)計階段應(yīng)該采取【】和逐步求精的方法,把一個模塊的功
能逐步分解,細(xì)化為一系列具體的步驟,進而用某種程序設(shè)計語言寫成
程序。
30.[]是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。
31.以下程序的執(zhí)行結(jié)果是_____。
#include<iostream.h>
classA
(
inta;
public:
voidseta(intx){a=x;}
voidshowa(){cout<<a<<endl;}
);
classB
(
intb;
public:
voidsetb(intx){b=x;}
voidshowb(){cout<<b<<endl:}
);
classC:publicA,privateB
(
private:
intc;
public:
voidsetc(intx,inly,intz)
(
c=z;
seta(x);
setb(y);
)
voidshowc(){cout<<c<<endl;}
voidmain()
Cc;
C.seta(1);
C.showa();
C.setc(1,2,3);
C.showc();
)
32.運算符重載仍然保持其原來的優(yōu)先級、和_
33.執(zhí)行以下程序后,輸出結(jié)果第二行的內(nèi)容是____
#include<iostream>
usingnamespacestd;
classTestClass
(
public:
virtualvoidwho(){cout<<"BaseClass"<<endl;}
};
classTestClasskpublicTestClass
(
public:
virtualvoidwho(){cout<<"TestClass1Class"<<endl;}
);
classTestClass2:publicTestClass
(
public:
virtualvoidwho(){cout<<"TestClass2Class"<<endl;}
);
intmain(intargc,cha產(chǎn)argv[])
(
TestClassobj1,*p;
TestClass1obj2;
TestClass2obj3;
P=&obj1;p->who();
p=&obj2;p->who();
p=&obj3;p->who();
return0:
)
34.開發(fā)一個C++語言程序的步驟通常包括編輯、【]、鏈接、運行和調(diào)
試。
35.下列程序不能通過編譯,應(yīng)該在劃線部分填寫的語句是[]o
#include<iostream,h>
#include<stdlib.h>
doubleFune(inta,intb,charch)
(
doublex;
switch(ch)
(
case
x=double(a)+b;
break;
case
x=double(a)-b;
break;
case/:
x=double(a)*b;
break;
case7:
if(B)x=double(a)/b;
else
exit(1)
break
default:
exit(l);
)
voidmain()
(
cout<<Func(32,6:--)<<
cout<<Func(32,6<<"J;
cout<<Func(32,6<<endl;
)
四、程序改錯題(10題)
36.使用VC++6,0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符"?''時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=0;
charstr[120J;
cout?"Enterastringendwith?.n?endl;
I不不不不不不不不error不不不不不不予不
cin.getline(str,120);
////小小小小小小小小prmr■不的不不不予*1?不■的不小?1?
while(str)
小*1*小*1*小?1*小*1*小*1*小*1*小*1*小?!?error不不*不A?不?£?不?4*不*A?予*A?不*!?
if(str[ij)=a)
str[i]=str[ij-a+A;
i++;
}
cout?str?endl;
return;
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
try
throw("errorH);
/*不******prrcr不不予**不亭不
catch(chars)
(
cout?s?endl;
try
(
throw((int)0);
)
、J**2*KJ*
*r不不不不不不*rerror干不干干干干干干
catch
(
cout?i?endl;
1
try
(
throw(O):
throw("en'orH);
)
1?x*
//*<**i**i**i**i**r*r*i'prror'?、不’’*不不
catch
cout?nERRORH?endl;
returnO;
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******eiror******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
/小小小小小小error不小不不不不
voidmain
不不不不不不error不干不不不不
intm=0142:
g
//*****^prrcr*不不不*不
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
staticintn=O:
CO
(
n++:
)
?CO
)
):
f
不不不舉不汴不不prp()r**不??、***/
intCO::n;
voidmain
COobj;
COobj2[7];
COCNULL:
c=&obj:
不不不不*不**en*cr不不不不不不不"/
eout?C.n?endl;
cout?C0::n?endl;
)
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******etror******的下面。
⑴不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
char*sl=HabcH:
/1.觸
//不不不不不不不不error,'不不不不不予不
assert(sizeof(s1)==3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="abM:
assert(sizeof(s2)==2);
cout?nsizeof(s2)=10"?endl;
chars3=23:
//■口?!?
//不不不不不不不不Frmr不不可不不不不不
assert(sizeof(s3)==4);
cout?"sizeof(s3)=l"?endl;
return;
41.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
//******cn*or******的下".面。
試題程序:
#include<iostream>
#include<fstream>
/*i>*1^
//*不******prrcr不不予**不亭不
usingstd;
voidWriteFile(char*s)
ofstreamout1;
/*1**1?*3**4**4**3**1*
//小小不不不小小不prmr不不不不不不不不
outl.open(nl.txt",binary|app);
for(inti=0;s[i]!=0;i++)
!?>1??>1?
//不小小下不小小小prrcr不不不不不不予不
outl.puts(s[i]);
outl.close;
voidClearFile
ofstreamout1;
outl.open(Ml.txt");
outl.close;
intmain
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
1
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include<iostream.h)
intmain
(
try
(
throw("error”);
)
//
/*r*i**i**i**i**r*r*r不不■?、■?、不,??不
catch(chars)
cout?s?endl;
try
(
throw((int)0);
1
/*1**1**y*
//不小不不不不不不prmr不不不不不不不不
catch
{
cout?i?endl;
)
try
(
throw(O);
throw("error”);
*1*7*7*7*7*7**£*7*7**£**£*7*
不不不不不不不不error不不不不干不予不
catch
(
cout?,'ERROR',?endl;
)
returnO;
43.使用VC++6.0打開考生文件夾下的源程序文件1.叩p,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
?TC;
);
//?,?*5*
//不不不不不不p[Tcr不不不不不不
TC:TC
cout?nConstructorn?n
i=0;
)
/l
//汴不汴汴汴*prmr不舉舉不舉不
TC:display
tout?"i=n?i?n,"?endl;
TC:TC
COUI?,,Destructor"?endl:
)
voidmain
TCa;
a.display;
44.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
!1******error******卜博
試題程序:
#include<iostream>
#include<fstream>
//■口
//不不不不不不不不Frmr不不可不不不不不
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
//■,、■,、■,、■,、■,、.j..[、.卜errorrjwrj?*2**3*
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
********error*2*
outl.puts(s[i]);
outl.close;
voidClearFile
ofstreamout1;
outl.open(Ml.txt'1);
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout?Hpleaseinputiistrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******eiror******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
number=i;
1
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
(
cout?,'number=,'?number?endl;
)
private:
intnumber;
voidmain
/1.的.觸
//不不不*不不不不error,'不不不不不予不
TCobjl;
objl.Print;
TCobj2(3);
objl.number=10;
II********err0[*%o******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
1
五、綜合應(yīng)用題(2題)
46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。類
People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓
名,然后輸出這個姓名到屏幕。
其中定義的類并不完整,按要求完成下列操作,將類的定義補充完
整。
(1)完成類的構(gòu)造函數(shù)功能,請在注釋1后添加適當(dāng)?shù)恼Z句。
(2)完成構(gòu)造函數(shù)對姓名的賦值,請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)定義類的友元函數(shù)fun,請在注釋3后添加適當(dāng)?shù)恼Z句。
(4)補充函數(shù)fun的年齡比較功能,請在注釋4后添加適當(dāng)?shù)恼Z句。
注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其
他的程序代碼。
試題程序:
#include<iostream.h>
classPeople
(
public:
//i*1*??I*1■4、
inti;
for(i=0;sUserName[i]!=O;i++)
{m_UserName[i]=sUserName[i];
)
/?>1**1**1**1**1*?1*“,、[,?1**1*?1**1**1**1*
//木本木木小小小小2小小"卜小小小
m_Old=nOld;
private:
charm_UserName[32];
intm_Old;
II********3********
);
voidfun(char*s,People&person!,People&person2
/I********4********
if
for(inti=0;personl.m_UserName[i]!=0;i+
+)
s[i]=personl.m_UserName[i];
s[i+l]=0;
else
for(inti=0;pcrson2.m_UscrNamc[i]!=0;i+
+)
{s[i]=person2.m_UserName[i];
s[i+l]=O;
1
)
)
voidmain
(
charsL32J;
Peoplepl(Mabcn,20);
Peoplep2(ndef,30):
fun(S,pl,p2);
cout?s?endl:
return;
)
47.請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件
proj3,此工程中包含一個源程序文件proj3.cpp,補充編制C++程序
proj3.cpp,其功能是讀取文本文件in.dat中的全部內(nèi)容,將文本存
放到doc類的對象myDoc中。然后將myDoc中的字符序列反轉(zhuǎn),并
輸出到文件out.dat中。文件in.dat的長度不大于1000字節(jié)。
要求:
補充編制的內(nèi)容寫在“〃**********“與“〃**********“兩行之間。實現(xiàn)
將myDoc中的字符序列反轉(zhuǎn),并將反轉(zhuǎn)后的序列在屏幕上輸出。不得
修改程序的其他部分。
注意:程序最后已將結(jié)果輸出到文件Out.dat中,輸出函數(shù)
writeToFile已經(jīng)給出并且調(diào)用。
//proj3.cpp
#include<iostream>
#include<fstream>
#include<catting>
usingnamespacestd;
classdoc
(
private:
char*sir;//文本字符串首地址
intlength;〃文本字符個數(shù)
public:
〃構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對象,filename是文件名字
符串首地址
doc(char*filename);
voidreverse;〃將字符序列反轉(zhuǎn)
一doc;
voidwriteToFile(char*filename);
};
doc::doc(char}filename)
ifstreammyFile(filename);
intlen=1001,tmp;
atr=newcharf1en];
length=O;
while((trap=myFile.get)!=EOF)
str[length++]=trap;
str[length]=t\O,;
myFile.close;
voiddoc::reverse)
//將數(shù)組atr中的length個字符中的第一個字符與最后一個字符交換,
第二個字符與倒數(shù)第二個
〃字符交換
/*1**1*%!*%!**1*?!*%!*%!*%!*
1I*.?*??*.?444,1?*.?*.?■/、*,??*?*j、?.?
//*!**1**1**1**1**1**!**1**1*///?1**1**!**!**1**1**1**1**1**1**1*?!*
//*l**T**4**T**T*****T**l**T**T**T**T**T**?*個個個個個個個個個個個個
doc::~doe
delete[]str;
voiddoc::writeToFile(char*filename)
OfstrcamoutFilc(filcnamc);
outFile?str;
outFile.close;
1
voidmain
(
docmyDoc("in.dat");
myDoc.reveme;
myDoc.writcToFilcf'out.dat");
}
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程test2O_3,此工程包含一個源程
序文件tesOO_3.cpp,其中定義了用于表示復(fù)數(shù)的類comp,但類comp的
定義并不完整。請按要求完成下列操作,將類comp的定義補充完整。
⑴定義comp的構(gòu)造函數(shù),函數(shù)含參數(shù)x和y,它們都是in,型的數(shù)據(jù),
默認(rèn)值都為0,請使用參數(shù)列表的形式分別將類數(shù)據(jù)成員a和b初始化
x和y的值。請在注釋“〃之后添加適當(dāng)?shù)恼Z句。
(2)完成類comp的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x和
y分別賦值給數(shù)據(jù)成員s和b,請在注釋“〃**2**”之后添加適當(dāng)?shù)恼Z句;
(3)完成類comp的友元函數(shù)friendcompplus(comp&x,comp&y)的定義,
該函數(shù)首先要定義一個comp類的對象c,然后將參數(shù)x和y的數(shù)據(jù)成
員a與b分別相加并分別賦值給c的成員a和b,最后返回c的值,請
在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。輸出結(jié)果如下:
10+20i
2+3i
result:12+23i
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件test20_3.cpp清單如下:
#include<iostream.h>
classcomp
inta;
intb;
public:
friendcompplus(comp&x,comp&y);
voidinput(intx,inty)
(
)
voidoutput()
(
cout<<a<<*+'<<b<<"i"<<endl;
)
};
compplus(comp&x,comp&y)
(
c.b=x.b+y.b;
returnc;
}
voidmain()
(
compx(10,20),y,z;
y.input(2,3);
z=plus(x,y);
x.output();
y.output();
cout<<"result:";
z.output();
49,使用VC6打開考生文件夾下的工程testll_30此工程包含一個
testll_3.cpp,其中定義了類CPosition,但該類的定義都并不完整。請按
要求完成下列操作,將類CPosition的定義補充完整。
(1)在類定義外完成重載的兩個構(gòu)造函數(shù)CPosition。和CPosition(double
dx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對象的
默認(rèn)值為x=0,y=0,后者為帶參數(shù)的構(gòu)造函數(shù),把數(shù)據(jù)成員x和y分
別初始化為參數(shù)dx和dy的值。請在注釋“〃**1**”之后添加適當(dāng)?shù)恼Z句。
(2)在類體中添加函數(shù)move(doubleax,doubleay)的定義,使得點的坐標(biāo)
x和y分別移動ax和ay個單位,請在注釋“〃**2**"之后添加適當(dāng)?shù)恼Z
句。
(3)完成函數(shù)doubledistance(doublebx,doubleby)的定義,該函數(shù)返回
*this和點(bx,by)的距離,請在注釋“〃**3**”之后添加適當(dāng)?shù)恼Z句。
注意:除在指定的位置添加語句外,請不要改動程序中的其他語句。
源程序文件testll_3.cpp清單如下:
#include<iostream.h>
#include<math.h>
classCPosition
(
public:
CPosition();
CPosition(doubledx,doubledy);
doublegetx();
doublegety();
H**2**
doubledistance(doublebx,doubleby);
private:
doublex;
doubley;
);
H**j**
(
x=0;y=0;
)
CPosition::CPosition(doubledx,doubledy)
(
x=dx;y=dy;
)
doubleCPosition::getx()
(
returnx;
)
doubleCPosition::gety()
(
returny;
)
doubleCPosition::distance(doublebx,doubleby)
voidmain()
doublea,b;
cout<<"Inputx,ypositionofapoint:n;
cin>>a>>b;
CPositionpsA(a,b);
cout<<"Inputx,ypositionofanotherpoint:";
cin>>a>>b;
cout<<nThedistanceisn<<psA.distance(a,b)<<endl;
)
參考答案
l.B
2.A
3.B解析:在C++語言中,調(diào)用函數(shù)不可能改變實參指針變量的值,但
可以改變實參指針變量所指變量的值。了解了實參指針變量的改變情況,
本題只剩下簡單的“加減法”了。
4.D解析:C++類中的靜態(tài)成員變量是該類中所有對象所共有的,它
能夠被類中的任何函數(shù)調(diào)用,所以選項A)、選項B)、選項C)是錯誤
的。而類的靜態(tài)數(shù)據(jù)成員是必須要進行初始化才能使用的。
5.B解析:C++語言中一個派生類能不能繼承基類的所有數(shù)據(jù)成員受繼
承方式的限制。
6.D解析:賦值語句合法的重要標(biāo)志之一就是賦值符號的左側(cè)應(yīng)該表示
為一個變量,即可以在內(nèi)存中存在一塊空間用于存放賦值符號右側(cè)的值。
據(jù)此,可以斷定選項A和B可以排除。注意;選項C中不是逗號表達(dá)
式,要考慮優(yōu)先級的問題。本題答案為Do
7.A計算機編程語言有三類,機器語言,匯編語言,高級語言。最初的
編程語言是機器語言。
8.AA?!窘馕觥繑?shù)組定義中的數(shù)字指的是數(shù)組的大小,而下標(biāo)是從。開
始的,所以數(shù)組的最后一個元素是num[9]0
9.D解析:本題考核虛函數(shù)的概念。在C++語言中,多態(tài)性可分為兩類:
編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過函數(shù)重載和
模板體現(xiàn)。其實現(xiàn)機制稱為靜態(tài)聯(lián)編(也譯為靜態(tài)綁定),即在編譯階段
決定執(zhí)行哪個同名的被調(diào)用函數(shù);運行時的多態(tài)性是通過體現(xiàn)的,其實
現(xiàn)機制稱為動態(tài)聯(lián)編(也譯為動態(tài)綁定),即在編譯階段不能決定執(zhí)行哪
個同名的被調(diào)用函數(shù),只在執(zhí)行階段才能依據(jù)要處理的對象類型來決定
執(zhí)行哪個類的成員函數(shù),用于實現(xiàn)此功能正是虛函數(shù)。
10.A
H.B解析:本題考察C++中輸入輸出流對象的一些常用成員函數(shù)的用
法。其中g(shù)et和getline的區(qū)別在于getline讀取中以Nn作為輸入結(jié)束符。
故本題中g(shù)etline只能接收第一個換行符之前的字符,即first。后面的字
符被丟棄。因此正確答案應(yīng)為B。
12.A
解析:本題考查的是if語句。if語句的條件部分是一個表達(dá)式而不是
語句,因此選項A的說法不正確。
13.D
字符型數(shù)據(jù)在計算機內(nèi)部是以ASCII碼存儲的,英文大寫字母和小寫
字母在ASCII碼表中都是連續(xù)的。大寫字母A?z是從65?90,小寫
字母a?z是從97?122。所以只要變量c大于等于a并月小于等于z
就能保證其為小寫字母。
14.D
Do【解析】選項A,語句P=&rny;是把對象my的地址值賦值給指
針變量P;選項B,語句MyClass*P,my;中由于P只是一個指向?qū)?/p>
象的指針,因此定義指針P不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次
構(gòu)造函數(shù):對成員函數(shù)的引用可以通過兩種形式:指針一〉成員函數(shù)
(形參表),或者對象名.成語函數(shù)名(形參表),故選項C錯誤,選項D
正確。
15.B
Bo【解析】本題考核拷貝構(gòu)造函數(shù)。上述程序中,拷貝構(gòu)造函數(shù)一共
被調(diào)用了3次:第1次是在執(zhí)行語句Datedate3(datel)時,用已經(jīng)建立
的對象datel對正在建立的對象date3進行初始化;第2次是在調(diào)用
fun函數(shù)時,由于是傳值調(diào)用,因此實參對象date3要對形參對象d進
行初始化;第3次是在執(zhí)行fun函數(shù)中的返回語句returntemp;時,系
統(tǒng)初始化一個匿名對象時使用了拷貝構(gòu)造函數(shù)。
16.B
Bo【解析】voidf(int*X,int&。y);第一個參數(shù)需要取值,第二個參
數(shù)需要取地址,所以為vl為取值,&Lv2為取址。
17.C
本題主要考查了函數(shù)重載。進行函數(shù)重載時,要求同名函數(shù)在參數(shù)個
數(shù)上不同,或者參數(shù)類型上不同,不可以根據(jù)函數(shù)返回值類型來重我
函數(shù);const關(guān)鍵字可以用于參與對重載函數(shù)的區(qū)分。因此對C++編譯器
區(qū)分重載函數(shù)無任何意義的信息是返回值類型。
18.A
19.A
C++中,setw()用來控制輸出間隔。
20.BB。【解析】字串的定位操作通常稱為串的模式匹配,是各種串處理
系統(tǒng)中最重要的操作之一。
21.B
本題考查的是對構(gòu)造函數(shù)的掌握,另外運算符是右結(jié)合的,所以
在進行輸出的時候都是先把原來的輸出后再自加lo
22.C
解析:本題考查的知識點是運算符重載。C++中規(guī)定,“=”運算符只能
作為成員函數(shù)重載,故本題的選項C是錯誤的。
23.C
考點:本題主要考查知識點為引用作為函數(shù)參數(shù)透析:執(zhí)行
max(a,b)++后,函數(shù)返回變量b后加1,即b=l1.因為函數(shù)參數(shù)采用的
引用方式,使用改變的是實參變量b的值。
24.關(guān)系關(guān)系解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二
維表稱為一個關(guān)系。表中的每一列稱為一個屬性,相當(dāng)于記錄中的一個
數(shù)據(jù)項,對屬性的命名稱為屬性名;表中的一行稱為一個元組,相當(dāng)于
記錄值。
25.多態(tài)性多態(tài)性
26.0
27.template<typenameT>TA(TA){returna++)template<typenameT>
\r\nTA(TA){returna++,)解析:本題考核函數(shù)模板的定義。通過兩個實
例知道該例中只有一種數(shù)據(jù)類型,所以在定義模板時只需定義一個模板
參數(shù)T。
28.virtualintA()=0;virtualintA()=0;解析:C++語言中的純虛函數(shù)是
一種特殊的函數(shù),它沒有自己的定義,只有聲明,純虛函數(shù)與虛函數(shù)聲
明的不同就在于在函數(shù)后面加上了“=0”。
29.自頂而下自頂而下
30.數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)解析:本題考查數(shù)據(jù)的邏輯結(jié)構(gòu)的
概念,數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。邏
輯關(guān)系是指數(shù)據(jù)元素之間的前后間關(guān)系。
31.13
32.結(jié)合性語法結(jié)構(gòu)結(jié)合性語法結(jié)構(gòu)
33.TestClasslClassTestClasslClass解析:TestClass為基類,TestClassl
和TestClass2都是TestClass的派生類。本題從main主函數(shù)入手,首先
定義了TestClass類型的對象obj1和指針p,然后又分別定義了TestClass1
和TestClass2的對象obj2和obj3。指針分別指向?qū)ο髈bj1、obj2和obj3,
然后分別調(diào)用其成員函數(shù)who(),分別輸出:“BaseClass",“TestClassl
Class","TestClass2Class”。
34.編譯編譯解析:C++語言是以編譯方式實現(xiàn)的高級語言,C++語言
程序的實現(xiàn),必須要使用某種C++語言的編譯器對程序進行編譯。
35.returnx;returnx;解析:本題函數(shù)聲明時指定了函數(shù)的返回值為
double,因此在函數(shù)體中必須存在一個return語句。
36.(1)應(yīng)改為“ein.getline(str,120,?);”。
\n⑵應(yīng)改為"while(str[i])"°
\n(3)應(yīng)改為“if(str[i]〉=a&&str[i]v=2)”。
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個
數(shù),終止標(biāo)志字符廣,所以第1處改為“cin.getline(str,120,?):第
2處的“whilc(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)”。
37.(1)應(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)識前的異常拋出語句為
u
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.(l)“voidmairT。
(2)“intm=0144;
(3)“intn=OX25;”或“intn==0x25;
【解析】本題主要考查了主函數(shù)定義及基同進制之間的轉(zhuǎn)換,包括十
進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為
“main”,函數(shù)名之后必須是一對括號,因此第1處應(yīng)改為“voidmain”。
cout輸出默認(rèn)是以十進制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)
現(xiàn)變量的初值不正確,十進制的100對應(yīng)八進制的144,卡進制的37
對應(yīng)十六進制的25,因此2和3應(yīng)分別改成“intm=0144;”,
“intn=0x25;”或"intn=0x25;
39.(l)“staticintn=O"應(yīng)改為"staticintn;"。
(2)“intCO::n;”應(yīng)改為"intCO::n=0;
(3)<4cout?c.n?endl;”應(yīng)改^J<4cout?c->n?endl;"。
【解析】本題要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1
處應(yīng)改為“staticintn;",第2處要給n賦值,第3處輸出時引用c的對
象,應(yīng)改為“cout?c->nvVendl;
40.(1)應(yīng)改為"assert(sizeof(sl尸=4);”。
\n⑵應(yīng)改為"assert(sizeof(s2)=lO);
\n(3)應(yīng)改為"assert(sizeof(s3)=l);"。
\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常。
t4assert(sizeof(sl)==3);”語句中“sizeof(sl)==3”為假,這會使程序產(chǎn)生異
常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)==4);”。
str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。
charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為
44assert(sizeof(s3)=1);
41.(1)應(yīng)改為"usingnamespacestd;"。
(2)應(yīng)改為“outl.open("l.txt",ios::binaryIios::app);
(3)應(yīng)改為“outl.put(s[i]);
【解析】本題第1史的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間sld,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;第2處,調(diào)用成員函數(shù)open
中,輸入、輸出方式是在ios類中定義的,所以“outl.open(Ml.txf,
binaryIapp);”語句缺少類ios,即第2處的語句修改為
44outl.open(Hl.txt",ios::binaryIios::app);第3個標(biāo)識應(yīng)
該用流成員函數(shù)put輸出字符,所以第3處的語句修改為
“outl.put(s[i]);
42.(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)識前的異常拋出語句為
44throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修
改為“catch
43.⑴應(yīng)改為“TC::TC”。
\n⑵應(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處“TCrdisplay”后的語句看,這
是在類外實現(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”。
44.(1)應(yīng)改為"usingnamespacestd;"。
\n(2)應(yīng)改為“outl.open,1.txt',ios::binary|ios::app);"。
\n(3)應(yīng)改為“outl.put(s[i]);”。
\n【解析】本題第1處的“usingstd廣是在程序中弓I入標(biāo)準(zhǔn)命名空間std,
對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為“usingnamespacestd;”c第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“out1.open,1.txt:binar
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防疫人員述職報告
- 安徽省安慶市2024-2025學(xué)年八年級下學(xué)期期中地理試題(原卷版+解析版)
- 硬膠囊制劑潔凈區(qū)管理
- 2025年土地使用權(quán)轉(zhuǎn)讓合同模板:房屋買賣協(xié)議
- 《2025企業(yè)重組如何處理合同解除事宜》
- 本地公司轉(zhuǎn)讓合同范本
- 工地裝修送貨合同范本
- 采購管理專業(yè)課程
- 幼兒入園協(xié)議
- 資產(chǎn)抵押擔(dān)保協(xié)議書范例
- 粉末冶金調(diào)機員培訓(xùn)
- 學(xué)校結(jié)核病防治工作制度
- 《H水電站水能規(guī)劃與防洪設(shè)計》18000字(論文)
- 阿拉善盟社區(qū)工作者招聘真題2024
- 村衛(wèi)生室管理培訓(xùn)
- 北京2025年北京市農(nóng)林科學(xué)院招聘43人筆試歷年參考題庫附帶答案詳解
- 2025年廣州市勞動合同范本下載
- 2025年北大荒黑龍江建三江水利投資有限公司招聘筆試參考題庫附帶答案詳解
- 靈活運用知識的2024年ESG考試試題及答案
- 國家藥品監(jiān)督管理局直屬單位招聘考試真題2024
- 企業(yè)安全知識培訓(xùn)課件
評論
0/150
提交評論