




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年河南省開封市全國計(jì)算機(jī)等級(jí)考試
C++語言程序設(shè)計(jì)模擬考試(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、1.選擇題(10題)
1.有以下程序:#include<iostream>usingnamespacestd;classR
{public:R(intrl,intr2){RI=rl;R2=r2;}voidprint();voidprintOconst;
private:intR1,R2;};voidR::print(){cout<<RI<<<<R2<<endl;}
voidR::print()const{cout<<RI<<<<R2<<endl;}intmain(){R
a(5,4);constRb(20,52);b.print();return0;}執(zhí)行后的輸出結(jié)果是()。
A.5,4B.20,52C.0,0D.4,5
2.()是以一種完全通用的方法來設(shè)計(jì)函數(shù)或類而不必預(yù)先說明將被使
用的每個(gè)對(duì)象的類型。
A.模板B.類C.對(duì)象D.函數(shù)
3.下列關(guān)于getline()函數(shù)的描述中,不正確的是()。
A.getline。函數(shù)是用來從鍵盤上讀取字符串的
B.getline()函數(shù)讀取字符串長度是受限制的
C.getline。函數(shù)讀取字符串時(shí),遇到終止符時(shí)就停止
D.getline。函數(shù)中所使用的終止符只能是換行符
4.有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}
voidmain(){inta=2,b=5,c=8;cout<<fun((int)fun(a+c,b),a-c);}
程序運(yùn)行后的輸出結(jié)果是()。
A.編譯出錯(cuò)B.9C.21D.9
5.sizeof(float)是()。
A.一個(gè)雙精度型表達(dá)式B.一個(gè)整型表達(dá)式C.一種函數(shù)調(diào)用D.一個(gè)不
合法的表達(dá)式
6.有以下類定義:classMyClass{private:intid;chargender;char*phone;
public:MyClass():id(0),gender('#'),phone(NULL){}MyClass(intno,char
ge='札char*ph=NULL){id=no;gender=ge;phone=ph;}};下列類對(duì)象定義
語句中錯(cuò)誤的是_____O
A.MyClassmyObj;
B.MyClassmyObj(ll,);
C.MyClassmy0bj(12;m');
D.MyClassmyObj(12);
7.已知在函數(shù)func中語句this->ff=O;與語句ff=O;的效果完全相同。
對(duì)于這一現(xiàn)象,下列表述中錯(cuò)誤的是
A.ff是某個(gè)類的數(shù)據(jù)成員,func是該類的友元函數(shù)
B.ff是某個(gè)類的數(shù)據(jù)成員,func是該類的成員函數(shù)
C.this->ff和任是同一個(gè)變量
D.func不是一個(gè)靜態(tài)成員函數(shù)
8.某二叉樹T有n個(gè)節(jié)點(diǎn),設(shè)按某種順序?qū)中的每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),
編號(hào)值為1,2,...n,且有如下性質(zhì):T中任一節(jié)點(diǎn)v,其編號(hào)等于左
子樹上的最小編號(hào)減1,而V的右子樹的節(jié)點(diǎn)中,其最小編號(hào)等于V左
子樹上的節(jié)點(diǎn)的最大編號(hào)加1。此二叉樹是按()順序編號(hào)的。
A.前序遍歷B.中序遍歷C.后序遍歷D.按層次遍歷
9.下面程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;
intmain(){intn=10;while(n>7){n—;cout<<11<<',';)cout<
<endl;}
A.10,9,8,B.9,8,7,C.10,9,8,7,D.9,8,7,6,
10.下面重載乘法運(yùn)算符的函數(shù)原型聲明中錯(cuò)誤的是()
A.TestClassoperator*(MyClass,double);
B.TestClassoperator*(double,MyClass);
C.TestClassoperator*(double,double);
D.TestClassoperator*(MyClass,MyClass);
二、單選題(13題)
11.已知類X成功地重載了一、+、=、口這幾個(gè)運(yùn)算符。則其中肯定屬
于成員函數(shù)的運(yùn)算符是:
A.前置--和口B=^n[]C.[]和后置--D.+和二
12.有如下程序:
#nclude<iostream>
usingnamespacestd;
intmain
voidfunction(doubleval);
doubleval;
function(val);
cout?val;
return0;
)
voidfunction(doubleval)
}val=3;}
編譯運(yùn)行這個(gè)程序?qū)⒊霈F(xiàn)的情況是()。A.編譯出錯(cuò),無法運(yùn)行B.輸出:3C.
輸出:3.0D.輸出一個(gè)不確定的數(shù)
13.已知類Myclass的定義如下
classMyClass{
public:
voidfunction1(MyClass&C){cout<<c.data;)
staticvoidfunction2(MyClass&C){cout<<c.data;}
voidfunction3(){cout<<data;}
staricvoidfunction4(){cout<<data;}
private:
intdata;
);
其中有編譯錯(cuò)誤的函數(shù)是()。
A.function1B.function?C.functionsD.function4
14.下列控制格式輸入/輸出的操作符中,能夠設(shè)置浮點(diǎn)數(shù)精度的是
()。
A.setpreCisionB.setwC.setfillD.showpoint
15.下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是()
A.線性鏈表B.棧C.循環(huán)鏈表D.順序表
16.假定MyClass為一個(gè)類,那么下列的函數(shù)說明中,()為該類的
析構(gòu)函數(shù)。
A.void~MyClass();
B.~MyClass(intn);
C.MyClass();
D.~MyClass();
17.有如下程序:
#include<iostream>
usingnamespacestd;
classONE{
intc;
public:
ONE():c(0){cout?l;}
ONE(intn):c(n){cout?2;}
);
classTWO{
ONEonel;
ONEone2;
public:
TWO(intm):one2(m){cout?3;}
};
intmain(){
TWOt(4);
return0;
)
運(yùn)行時(shí)的輸出結(jié)果是
A.3B.23C.123D.213
18.有如下語句序列:
ifstreaminfile("DATA.DAT");
if(infile.good())cout?"A";
else{
cout?"B";
ofstreamoutfile("DATA.DAT");
if(outfile.fail())cout?"C";elsecout?"D";
)
若執(zhí)行這個(gè)語句序列顯示的是BD,則說明文件
DATA.DAT
A.以讀方式打開成功
B.以讀方式打開失敗,但以寫方式打開成功
C.以讀方式打開失敗,以寫方式打開也失敗
D.以讀方式打開成功,以寫方式打開也成功
19.有如下類定義:
classMyClass
(
public:
private:
intdata;
};
若要為MyClass類重載流輸入運(yùn)算符“>>”,使得程序中可以
€<cin?obj;”的形式改變MyClass類的對(duì)象Obj中數(shù)據(jù)成員data的值,
則橫線處的聲明語句應(yīng)為()。
A.friendistream&operator?(istream&is,MyClass&A.;
B.friendistream&operator?(istream&is,MyClassA.;
C.istream&operator?(istream&is,MyClass&A.;
D.istream&operator?(istream&is,MyClassA.;
20.以下函數(shù)值的類型是
fun(floatx)
{floaty;
y=3*x-4;
returny;
)
A.intB.不確定C.voidD.float
21.有如下程序:
#include<iostream>
usingnamespacestd;
voidfunction2(intn);
voidfunctionl(intn):{
if(n<=0)return;
function2(n-2);
)
voidfunction2(intn){
if(n<=O)return;
functionl(n-l);
)
intmain(){
functionl(5);
returnO;
下列關(guān)于程序運(yùn)行情況的描述中,正確的是()。
A.A.functionl運(yùn)行1次,function!運(yùn)行2次
B.functionl運(yùn)行2次,function!運(yùn)行1次
C.functionl運(yùn)行2次,function2運(yùn)行3次
D.function!運(yùn)行2次,function2運(yùn)行2次
22.一個(gè)函數(shù)為voidf(int,charch='a'),另—函數(shù)為voidf(int),則
它們()o
A.不能在同一程序中定義
B.可以在同一程序中定義并可重載
C.可以在同一程序中定義,但不可以重載
D.以上三種說法均不正確
23.下列關(guān)于關(guān)系運(yùn)算的敘述中正確的是()。
A.投影、選擇、連接是從二維表的行的方向來進(jìn)行運(yùn)算
B.并、交、差是從二維表的列的方向來進(jìn)行運(yùn)算
C.投影、選擇、連接是從二維表的列的方向來進(jìn)行運(yùn)算
D.以上三種說法都不對(duì)
三、2.填空題(12題)
24.如果要把返回值為void的函數(shù)A聲明為類B的友元函數(shù),則應(yīng)在
類B的定義中加入的語句是【】。
25.數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
26.下面是復(fù)數(shù)類complex的定義,其中作為友元函數(shù)重載的運(yùn)算符“-
「'的功能是將參數(shù)對(duì)象的實(shí)部減1,然后返回對(duì)該對(duì)象的引用;請(qǐng)補(bǔ)充
完整。
classcomplex
(
private:
intreal;
ihtimag;
public:
complex(inti-O,inti=O):real(r),imag(i){}
voidshow()
{
cout<<real<<(imag<0?"-"<<imag<<'i';
)
【】;
};
complex&operator—(complex&c)
(
c.real—;
returnc;
)
27.排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入
排序、【】和選擇排序等。
28.常見的需求分析方法有【】和面向?qū)ο蟮姆治龇椒ā?/p>
29.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些
信息的要求稱為【】。
30.對(duì)于下面定義的類MyClass,請(qǐng)?jiān)诤瘮?shù)f()中添加對(duì)象成員把n的值
修改為50。
classMyClass
(
public:
MyClass(intx){n=x;}
voidSetNum(intnl){n=nl;}
private:
intn;
);
intf()
(
MyClass*ptr=newMyClass(45);
[]
)
31.浮點(diǎn)數(shù)的默認(rèn)精度值是_____o
32.匯編程序的功能是將匯編語言所編寫的源程序翻譯成由【】組成的
目標(biāo)程序。
33.如果表達(dá)式-x中的“-”是重載的類運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格
式,及表達(dá)式還可以表示為0
34.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目。則實(shí)
體集“項(xiàng)目主管”與實(shí)體集“項(xiàng)目”的聯(lián)系屬于【】的聯(lián)系。
35.在深度為5的完全二叉樹中,度為2的結(jié)點(diǎn)數(shù)最多為【】。
四、程序改錯(cuò)題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯(cuò)誤的語句在//******errc)r******的下面,修改該語句即
可。
試題程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
TC;
);
Ii******e*or******
TC:TC
(
cout?"Constructor"?",";
i=0;
)
II******enor******
TC:display
(
tout?"i="?i<<","?endl;
)
!i******enor******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
)
37.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤。本程序要求實(shí)現(xiàn)
的功能為從鍵盤輸入一個(gè)字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在
!1******error******白勺~
試題程序:
#include<iostream>
#include<fstream>
I!********error********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
!1********enor********
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
********error********
outl.puts(s[i]);
}
outl.close;
voidClearFile
ofstreamout1;
outl.open("l.txt");
outl.close;
intmain
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number=i;
}
voidSetNumber(intm)
number=m;
intGetNumberconst
(
returnnumber;
)
voidPrintconst
{
cout?"number="?number?endl;
)
private:
intnumber;
};
voidmain
TCobjl;
objl.Print;
TCobj2(3);
!I********enor********
objl.number=10;
II********ej*j*or*^^0******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時(shí)有錯(cuò)誤,請(qǐng)改正程序中的錯(cuò)誤,使得程序輸出:
9,8,7,6,5
注意:錯(cuò)誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
!********e£i*or********!
TC(inti)
(
m_i=i;
)
voidprint
{
cout?—m_i?,;
)
public:
intm_i;
};
intmain
I********ej*j*or********!
inti;
TC04(10);
while(i>5)
!**************I
1++:
04.print;
)
cout?endl;
returnO;
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果
為:
sizeof(S1)=5
sizeof(s2)=I0
sizeof(s3)=l
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
(1)不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。
試題程序:
#include<iostream.h>
#include<assert.h>
voidmain()
char*sl="abc":
II********error********
assert(sizeof(s1)==3):
cout?"sizeof(s1)=5"?endl;
chars2[10]="ab":
//*1**1**1**1**1**4**1**1*<!>
//年>不不不不不個(gè)不m*cr個(gè)不不不不不不不
assert(sizeof(s2)==2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
II********error********
assert(sizeof(s3)==4);
cout?"sizeof(s3)=l"?endl;
return;
)
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,輸出的結(jié)果為
Constructor,i=0,
Destructor
注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即可。
試題程序:
#include(iostream.h)
classTC
inti;
public:
TC;
voiddisplay;
-TC;
);
II******error******
TC:TC
(
cout?"Constructor"?",";
i=0;
)
II******epj*or******
TC:display
(
tout?"i="?i<<","?endl;
)
Ii******error******
TC:TC
(
COUI?"Destructor"?endl:
)
voidmain
(
TCa;
a.display;
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運(yùn)行時(shí)有錯(cuò)。請(qǐng)改正程序中的錯(cuò)誤,使程序輸出的結(jié)果為
100
37
32
注意:錯(cuò)誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
II******epj*or******
voidmain
II******error******
intm=0142:
II******error******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
43.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstrf120];
cout?"Enterastringendwith?."?endl;
//********error********
cin.getline(str,120);
1I********error********
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout?str?endl;
return;
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序
要求輸入一個(gè)字符串,然后將其中的小寫字母改成大寫字母,字符可
能輸入多行,當(dāng)輸入字符“?”時(shí),默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出
到屏幕中。
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******error******的下面。
試題程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
I!********enor********
cin.getline(str,120);
II********enor********
while(str)
(
II********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
cout?str?endl;
return;
45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)
行有問題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使程序的輸出結(jié)果為:
number=l
number=10
number=100
注意:不要改動(dòng)main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯(cuò)誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
classTC
(
public:
TC(inti)
(
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
cout?"number="?number?endl;
private:
intnumber;
};
voidmain
(
II********ej*ror********
TCobjl;
objl.Print;
TCobj2(3);
II********enor********
objl.number=10;
Ii********error*%()******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
五、綜合應(yīng)用題(2題)
46.
請(qǐng)使用【答題】菜單命令或直接用VC6打開考生文件夾下的工程
prog3,其中聲明了VaiArray類,該類在內(nèi)部維護(hù)一個(gè)動(dòng)態(tài)分配的整型
數(shù)組。ValArray類的復(fù)制構(gòu)造函數(shù)應(yīng)實(shí)現(xiàn)對(duì)象的深層復(fù)制。請(qǐng)編寫
VaiArray類的復(fù)制構(gòu)造函數(shù)。在main函數(shù)中給出了一組測(cè)試數(shù)據(jù),此
種情況下程序的輸出應(yīng)該是:
VaiArrayvl={1,2,3,4,5}VaiArrayv2={1,2,3,4,5}要求:
補(bǔ)充編制的內(nèi)容寫在“〃*********333**********與
”*********666*********”之間,不得修改程序的其他部分。
注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為boj文件,并且在本程序中調(diào)用。
//VaiArray,h
#include<iostream>usingnamespacestd;classValArray{
int*v:intsize;public:
ValArray(constint*P,intn):size(n){
v=newint[size];
for(inti=0;i<size;i++)v[i]=P[i];
47.請(qǐng)使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程
proj3,其中聲明的DataList類,是一個(gè)用于表示數(shù)據(jù)表的類。DataList
的重載運(yùn)算符函數(shù)Operator+,其功能是求當(dāng)前數(shù)據(jù)表與另一個(gè)相同長
度的數(shù)據(jù)表之和;即它返回一個(gè)數(shù)據(jù)表,其每個(gè)元素等于相應(yīng)兩個(gè)數(shù)
據(jù)表對(duì)應(yīng)元素之和。請(qǐng)編寫這個(gè)operator+函數(shù)。程序的正確輸出應(yīng)該
是:
兩個(gè)數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個(gè)數(shù)據(jù)表之
和:
4,6,8,10,12,14要求:
補(bǔ)充編制的內(nèi)容寫在“//********333********''與
“〃********666********”之間,不得修改程序
的其他部分。
注意:程序最后將結(jié)果輸出到文件。ut.dat中。輸出函數(shù)writeToFile
已經(jīng)編譯為。bj文件,并且在本程序中調(diào)用。
//DataList.h
#inClude<iostream>usingnamespaCestd;
ClaSSDataList{〃數(shù)據(jù)表類intfen;
double*d;public:
DataList(intlen,doubledata[]=NULL);DataList(DataList&data);
intlengthConst{returnlen;}
doublegetElement(inti)Consttreturnd[i];}
DataListoperator+(ConstDataList&list)Const;〃兩個(gè)數(shù)據(jù)表求和void
showConst;〃顯示數(shù)據(jù)表
);
voidwriteToFile(Char$,ConstDataList&);//main.Cpp
#inClude,,DataList.h"
DataList::DataList(intlen,doubledata[]):len(ien){d=new
doubletlen];
for(inti=0;i<len;i++)
dOOi=(data==NULL?O.0:data[i]);
)
DataList::DataList(DataList&data):len(data.len){d=new
doubleflenl;
fbr(inti=0;i<len;i++)d[i]=data.d[i];
DataListDataList::0perator+(Con8tDataList&list,)Const{〃兩個(gè)數(shù)據(jù)
表求和double*dd=newdoubletlist,lensth];
//********333********
〃********666********
returnDataList(list.length,dd);}
voidDataList::showConst{〃顯示數(shù)據(jù)表fr(intoi=0;i<len-1;i++)
eout?d[i]?,,,“;
Cout?d[len-l]?endl;
intmain{
doublesl[]={l,2,3,4,5,6};
doubles2[]={3,4,5,6,7,8);
DataListlist1(6,si),list2(6,s2);〃定義兩個(gè)數(shù)據(jù)表對(duì)象eout<<“兩個(gè)
數(shù)據(jù)表:“<<endl:
listl.show:list2.show;eout?endl<<”兩個(gè)數(shù)據(jù)表之
和:n?endl:
(listl+list2).show;
writeToFile(,,,,?listl+lis⑵;return0:
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程testl3_3o此工程包含一個(gè)
testl3_.cpp,其中定義了類Vector,但類的定義并不完整。請(qǐng)按要求完成
下列操作,將程序補(bǔ)充完整。
(1)完成構(gòu)造函數(shù)的定義,把數(shù)據(jù)成員size初始化為參數(shù)s的值,數(shù)據(jù)成
員buffer指向動(dòng)態(tài)申請(qǐng)的int型size大小的空間。請(qǐng)?jiān)谧⑨尅啊?*1**”之
后添加適當(dāng)?shù)恼Z句。
⑵完成拷貝構(gòu)造函數(shù)的定義,注意解決多次刪除的問題。請(qǐng)?jiān)谧⑨?/p>
“〃**2**,,之后添加適當(dāng)?shù)恼Z句。
⑶完成成員函數(shù)elem的定義,該函數(shù)返回buffer的第ndx個(gè)元素的值,
注意如果ndx超界,請(qǐng)輸出“errorinindex”。請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加
適當(dāng)?shù)恼Z句。
(4)完成析構(gòu)函數(shù)的定義,要求先將字符d打印在屏幕上,再釋放buffer
指向的空間。請(qǐng)?jiān)谧⑨尅啊?*4**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
123456789101234567891Odd
注意:除在指定的位置添加語句外,請(qǐng)不要改動(dòng)程序中的其他語句。
源程序文件testl3_3清單如下:
#include<iostream.h>
#include<stdlib.h>
classVector
public:
Vector(ints=100);
Vector(Vector&v);
int&elem(intndx);
voiddisplayO;
voidset();
?Vector();
protected:
intsize;
int*buffer;
);
Vector::Vector(ints)
/
I
****
1
J
.
Vector::Vector(Vector&v)
(
〃**2**
i++
*(buffer+i)=*(v.buffer+i);
)
)
int&Vector::elem(intndx)
//**3**
cout<<eri'orinindex<<end!;
exit(l);
)
returnbuffer[ndx];
)
voidVector::displayO
(
for(intj=0;j<size;j++)
cout<<elem(i)<<endl;
)
voidVector::set()
(
for(intj=0;i<size;j++)
elem(j)=j+l;
)
Vector::~Vector()
{
〃**4**
voidmain()
(
Vectora(10);
Vectorb(a);
a.set();
b.set();
a.displayO;
b.displayO;
49.使用VC6打開考生文件夾下的工程testl7_3,此工程包含一個(gè)源程
序文件testl7_3.cpp,其中定義了用于表示點(diǎn)的類Point和表示內(nèi)容的類
Text以及二者的派生類CircleWithText,但它們的定義并不完整。請(qǐng)按
要求完成下列操作,將它們的定義補(bǔ)充完整。
⑴定義類P。血的構(gòu)造函數(shù),請(qǐng)使用參數(shù)列表的形式將成員函數(shù)x和y
分別初始化為參數(shù)xl和yl的值。請(qǐng)?jiān)谧⑨尅啊?*1**。”之后添加適當(dāng)?shù)?/p>
語句。
(2)完成類Text的構(gòu)造函數(shù)Text(char*str)的定義,將char型的str指向
的內(nèi)容賦值給text并且輸出str所指向的內(nèi)容,請(qǐng)?jiān)谧⑨尅啊?*2**”之后
添加適當(dāng)?shù)恼Z句。
⑶定義類CircleWithText的構(gòu)造函數(shù)CircleWithText(intcx,intcy,char
*msg),int型的ex和cy用于賦值給x和y,char型的指針*msg用于賦
值給text,請(qǐng)?jiān)谧⑨尅啊?*3**”之后添加適當(dāng)?shù)恼Z句。
輸出結(jié)果如下:
Point:34
hello
注意:除在指定位置添加語句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件testl7_3.cpp清單如下:
#include<iostream.h>
#include<string.h>
classPoint
intx,y;
public:
〃**[**
cout<<"Point:"<<x<<"<<y<<'\n';
)
~Point(){}
);
classText
(
chartext[100];
public:
Text(char*str)
(
〃**2**
)
-Text(){}
);
classCircleWithText:publicPoint,publicText
{
public:
()
?CircleWithText(){}
);
voidmain()
(
CircleWithTextcm(3,4,"hello");
)
參考答案
l.B
2.A解析:此題考查的是模板的特點(diǎn)。模板是以一種完全通用的方法來
設(shè)計(jì)函數(shù)或類而不必預(yù)先說明將被使用的每個(gè)對(duì)象的類型。
3.D解析:本題主要考察C++中輸入流成員函數(shù)的使用。輸入流的成員
函數(shù)主要包括open。、get。、getline。、read。、seekg()、tellg()和close。
等函數(shù)。其中,getline()函數(shù)從輸入流中讀取多個(gè)字符,并且允許指定輸
入終止符,其原形為:
getline(char*line,intsize,char-\\n')o
其中:函數(shù)的第1個(gè)參數(shù)是字符數(shù)組,用于放置讀取的文本:第2個(gè)參
數(shù)是本次讀取的最大字符個(gè)數(shù),通過改變?cè)搮?shù)可以設(shè)置讀入的最大字
節(jié)數(shù)即字符串長度第3個(gè)參數(shù)是分隔字符,作為讀取一行結(jié)束的標(biāo)志,
默認(rèn)為換行符\",通過改變?cè)搮?shù),可以自定義輸入形式和結(jié)束標(biāo)志。
因此可以判斷,題目選項(xiàng)D的敘述是錯(cuò)誤的,可以通過改變參數(shù)修改
getline()函數(shù)中所使用的終止符。
4.B解析:本題的運(yùn)算過程是fun((int)fun(a+c,B,a-C,fun((int)fun(10,
5),2-8),fun((int)15.000000,-6),fun(15,-6)=9o
5.B
該函數(shù)用于數(shù)據(jù)類型和變量。注意:sizeof操作符不能用于函數(shù)、不完
全類型或位字段。不完全類型指具有未知存儲(chǔ)大小的數(shù)據(jù)類型,如未
知存儲(chǔ)大小的數(shù)組類型、void類型等。
6.B解析:初始化應(yīng)該和構(gòu)造函數(shù)相同。
7.A解析:本題考核this指針的使用。類的每一個(gè)成員函數(shù)都有一個(gè)隱
含定義的常量指針,稱為this指針。它是成員函數(shù)所屬對(duì)象的指針,它
指向類對(duì)象的地址。若func()是該類的友元函數(shù),this指針就沒有指向
同一個(gè)對(duì)象的地址,語句this->ff=O;與語句ff=O;的效果就不同了。
靜態(tài)成員函數(shù)沒有this指針。因?yàn)轭愔挥幸粋€(gè)靜態(tài)成員函數(shù)實(shí)例,所以
使用this指針沒有什么意義。在靜態(tài)成員函數(shù)中使用this指針會(huì)引起編
譯錯(cuò)誤。
8.A解析:根據(jù)節(jié)點(diǎn)v的右子樹的節(jié)點(diǎn)中,其最小編號(hào)等于v左子樹上
的節(jié)點(diǎn)的最大編號(hào)加1,可以斷定是前序遍歷。
9.B
10.C
1LB解析:賦值運(yùn)算符=和運(yùn)算符口只能作為成員函數(shù)重載,而一,+則
沒有限止。
12.D
本題考查函數(shù)調(diào)用及傳值方式傳遞參數(shù),執(zhí)行函數(shù)function時(shí),并沒
有將3的值傳回來,而val又沒有初始化,所以會(huì)輸出一個(gè)不確定的
值,D選項(xiàng)正確。
13.D
14.A
iomanip中定義的操縱符包括:setfill(ch)用ch填充空白、
setprecision(n)將浮點(diǎn)精度置為n、setw(w)、讀寫w個(gè)字符的值
showpoint沒置小數(shù)點(diǎn)。
15.B解析:棧是限定在二端進(jìn)行插入與刪除的線性表。在棧中,允許插
入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧
頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元
素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按
照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。注意:隊(duì)列組織數(shù)據(jù)的
原則是“先進(jìn)先出”或“后進(jìn)后出,注意:數(shù)據(jù)結(jié)構(gòu)中,棧和隊(duì)列組織數(shù)
據(jù)的原則。
16.D解析:本題考核類的析構(gòu)函數(shù)。在C++中,析構(gòu)函數(shù)名為符號(hào)“?”
加類名,析構(gòu)函數(shù)沒有參數(shù)和返回值。根據(jù)以上知識(shí)可知,MyClass類
的正確析構(gòu)函數(shù)的說明為~MyClass()。
17.C
本題主要考查了成員對(duì)象。類TWO的數(shù)據(jù)成員是類ONE的對(duì)象onel
和one2,main。函數(shù)中首先創(chuàng)建類TWO的對(duì)象t并提供初始值4,先
執(zhí)行成員對(duì)象onel的構(gòu)造函數(shù)體,輸出1;再執(zhí)行成員對(duì)象one2的構(gòu)
造函數(shù)體,輸出2,最后執(zhí)行類TWO的構(gòu)造函數(shù)體,輸出3。因此本
題程序運(yùn)行時(shí)的輸出結(jié)果是123o
18.C
19.A
本題考查重載流運(yùn)算符“>>”,根據(jù)重載規(guī)則,本題答案為A。
20.A解析:函數(shù)定義時(shí)如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為into函數(shù)中如果
有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但
它并不能改變函數(shù)的類型,實(shí)際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作
為返回值,因此本題的函數(shù)值類型是int。
21.D
Do【解析】函數(shù)執(zhí)行過程為:functionl(5),function2⑶,
functionl(2),function2(0)return。
22.B解析:題目中的兩個(gè)函數(shù)參數(shù)個(gè)數(shù)不同,因此可以在同一程序中定
義為重載函數(shù)。所以,選項(xiàng)B)敘述正確。
23.C解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運(yùn)用常規(guī)的集合運(yùn)算(并、
交、差、笛卡爾積等)外,還定義了一些專門的關(guān)系運(yùn)算,如投影、選擇、
連接等運(yùn)算。前者是將關(guān)系(即二維表)看成是元組的集合,這些運(yùn)算主
要是從二維表的行的方向來進(jìn)行的;后者主要是從二維表的列的方向來
進(jìn)行運(yùn)算。因此,選項(xiàng)A與B中的說法都是錯(cuò)誤的,而選項(xiàng)C中的說
法是正確的。
24.friendvoidA();friendvoidA();解析:C++中類的友元函數(shù)在聲明
時(shí)應(yīng)在該函數(shù)前面加上關(guān)鍵字friend,同樣如果要聲明一個(gè)類為另一個(gè)
類的友元類也要在前面類名前加上friend0
25.數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMS)
26.friendcomplex&operator-(complex&)friendcomplex&operator—
(complex&)解析:本題考核運(yùn)算符重載的定義。程序要填入的是運(yùn)算符
函數(shù)operator-在類complex中的聲明,運(yùn)算符“-”是作為友元函數(shù)重
載的。根據(jù)題目給出的條件,易得到答案。
27.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入
排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選
擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作
用機(jī)制和區(qū)別。
28.結(jié)構(gòu)化分析方法結(jié)構(gòu)化分析方法解析:本題是基礎(chǔ)題,考核需求分
析方法。常見的需求分析方法有結(jié)構(gòu)化分析方法和面向?qū)ο蟮姆治龇椒ā?/p>
29.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它
請(qǐng)求對(duì)象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制
流。
3O.Ptr->SetNum(50);Ptr->SetNum(50);解析:本題考查的是考生使
用對(duì)象指針調(diào)用成員函數(shù)的能力,指針調(diào)用成員函數(shù)應(yīng)該使用符號(hào)“-
>"。
31.6位6位
32.機(jī)器語言機(jī)器語言
33.x.operator—()
34.一對(duì)多一對(duì)多解析:實(shí)體集“項(xiàng)目主管”與實(shí)體集“項(xiàng)目”的聯(lián)系屬于
一對(duì)多的聯(lián)系。
35.15
36.(1)應(yīng)改為“TC::TC”。
⑵應(yīng)改為“voidTC::display”。
⑶應(yīng)改為“TC::?TC”。
【解析1在類的外部定義成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名
和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)
類,使用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改
為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后
的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)
誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為
“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是
在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名
相同,并在前面加“?”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處
的語句應(yīng)改為“TC::?TC”。
37.(1)應(yīng)改為"usingnamespacestd;"。
\n(2)應(yīng)改為"outl.open('l.txt',ios::binary|ios::app);"。
\n(3)應(yīng)改為“outl.put(s[i]);”。
\n【解析】本題第1處的“usingstd;”是在程序中弓I入標(biāo)準(zhǔn)命名空間std,
對(duì)于C++中弓I入標(biāo)準(zhǔn)命名空間的格式,缺少namespace,所以第1處
的語句修改為"usingnamespacestd;第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“outl.open是.txt',binary|
app);”語句缺少類ios,即第2處的語句修改為“outl.open。.txt]ios::
binary|ios::app);”。第3個(gè)標(biāo)識(shí)應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);
38.⑴應(yīng)改為“TCobjl(l);3
(2)應(yīng)改為“Objl.SetNumber(lO);
(3)應(yīng)改為“0bj2.SelNumber(lOO);
【解析】本題第1處的“TCobjl;”語句是聲明TC類的對(duì)象Objl,根據(jù)
TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個(gè)
輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(l);第2處處
的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C+
+中成員函數(shù)的使用形式應(yīng)該是:對(duì)象名.成員函數(shù),所以修改為
“objl.SetNumber(lO);類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)
例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對(duì)象,
這里應(yīng)該使用定義的對(duì)象,即。bj2,所以將語句修改為
“obj2.SetNumber(lOO);
39.(1)應(yīng)添力「public:"。
\n(2)“inti”應(yīng)改為“inti(10);
\n(3)“i++;”應(yīng)改為“i—;
\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、
保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類
的對(duì)象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:否則該類無法被實(shí)例
化。變量的初始化可以通過“=”號(hào),也可以和初始化對(duì)象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個(gè)數(shù),while的循環(huán)變量i
每次減1,在i>5時(shí)循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則
循環(huán)永遠(yuǎn)不會(huì)退出。
40.(1)應(yīng)改為"assert(sizeof(sD==4);
\n⑵應(yīng)改為"assert(sizeof(s2尸=10);
⑦⑶應(yīng)改為"assert(sizeof(s3尸=1);
\n【解析】assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正
常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。
uassert(sizeof(s1)=3);”語句中"sizeof(sD==3”為假,這會(huì)使程序產(chǎn)生異
常,不能正常執(zhí)行。因?yàn)閟trl的值為abc,但是它還有一個(gè)尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sD==4);”。
str2[10]說明,str2的空間為10,在第2處修改為"assert(sizeoRs2)=10);”。
charstr3=23;語句說明23是字符,所占存儲(chǔ)空間為1,所以修改為
t4assert(sizeof(s3)=1);
41.⑴應(yīng)改為“TC::TC”。
5⑵應(yīng)改為"voidTC::display”。
\n(3)應(yīng)改為“TC::~TC”。
\n【解析】在類的外部定義成員函數(shù)時(shí),必須在成員函數(shù)前面加上類名
和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個(gè)成員屬于哪個(gè)類,使
用格式為“(類名)::〈成員函數(shù)〉((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::
TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這
是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯(cuò)誤問題,display
函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC:display"。由第
3處的語句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函
數(shù)是一個(gè)特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用
采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。
42.(l)uvoidmain,,o
(2)“intm=0144;
(3)“intn=OX25;”或“intn==0x25;
【解析】本題主要考查了主函數(shù)定義及幕同進(jìn)制之間的轉(zhuǎn)換,包括十
進(jìn)制到八進(jìn)制,十進(jìn)制到十六進(jìn)制。主函數(shù)定義的定義形式為
“main”,函數(shù)名之后必須是一對(duì)括號(hào),因此第1處應(yīng)改為“voidmain”。
cout輸出默認(rèn)是以十進(jìn)制方式輸出的,根據(jù)題目要求輸出的結(jié)果可發(fā)
現(xiàn)變量的初值不正確,十進(jìn)制的100對(duì)應(yīng)八進(jìn)制的144,卡進(jìn)制的37
對(duì)應(yīng)十六進(jìn)制的25,因此2和3應(yīng)分別改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
43.⑴應(yīng)改為“ein.getline(str,120,?);”。
\n⑵應(yīng)改為"while(str[i])"°
5,
\n(3)應(yīng)改為“if(str[i]>=a&&str[i]<=2)o
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個(gè)
數(shù),終止標(biāo)志字符)”,所以第1處改為“cin.getline(str,120,?);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省瀘州市瀘縣重點(diǎn)名校2025屆初三下第六次周考生物試題含解析
- 寧夏長慶高級(jí)中學(xué)2025屆高三第一次高考模擬考試生物試題含解析
- 浙江省金華市聚仁教學(xué)集團(tuán)2025年初三下學(xué)期第一次摸底考試英語試題試卷含答案
- 云南省大理白族自治州南澗彝族自治縣2024-2025學(xué)年五年級(jí)數(shù)學(xué)第二學(xué)期期末經(jīng)典模擬試題含答案
- 遼寧省朝陽市凌源市凌源三中2024-2025學(xué)年高三第四次調(diào)研考試生物試題含解析
- 吉林省吉林市第五十五中學(xué)2025年高三4月模擬考試數(shù)學(xué)試題含解析
- 電子書銷售合同模板
- 個(gè)人家具買賣合同
- 二手住宅交易協(xié)議樣本
- 編劇委托創(chuàng)作合同范本
- 《尼爾斯騎鵝旅行記》讀書分享課件
- Unit 2 Morals and Virtues Listening and Speaking教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版高中英語必修第三冊(cè)
- (統(tǒng)編2024版)語文一年級(jí)下冊(cè)第七單元解析+任務(wù)目標(biāo)+大單元教學(xué)設(shè)計(jì)
- 消毒供應(yīng)中心外來醫(yī)療器械管理
- 第六章學(xué)習(xí)法治思想提升法治素養(yǎng)講解
- 醫(yī)務(wù)人員職業(yè)暴露的預(yù)防及處理課件
- 2025年內(nèi)蒙古自治區(qū)包頭市中考試卷數(shù)學(xué)模擬卷(二)
- 2025年華潤燃?xì)庹衅腹P試參考題庫含答案解析
- 《產(chǎn)業(yè)經(jīng)濟(jì)學(xué)》期末考試復(fù)習(xí)題及答案
- 法定傳染病診斷標(biāo)準(zhǔn)2023年
- 高校食堂飯菜價(jià)格管理制度
評(píng)論
0/150
提交評(píng)論