




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年河北省張家口市全國計算機等級考
試C++語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、1.選擇題(10題)
1.執(zhí)行語句序列ofetreamoutfileC'DATA.DAT");if(...)cout<<"OK";
elsecout<<"FAIL";后,如果文件打開成功顯否則就顯ZF
"FAIL%由此可知,上面if語句的.一處的表達式應(yīng)是
A.outfile.fhil()或outfile
B.outfile.good?;?outfile
C.outfile.good?;騩utfile
D.outfile.fhil()或!outfile
2.棧和隊列的共同特點是()。
A渚K是先進先出B渚K是先進后出C.只允許在端點處插入和刪除元素
D.沒有共同點
3.當(dāng)需要將一個函數(shù)boolisnumber(charC)聲明為內(nèi)聯(lián)函數(shù)時,則此內(nèi)
聯(lián)函數(shù)的函數(shù)原型為()。
A.enumboolisnumber(charC);
B.defineboolisnumber(charC);
C.inlineboolisnumber(charC);
D.externboolisnumber(chatC);
4.設(shè)有程序段intk=10;while(k=0)k=k-1;則下面描述中正確的是
A.循環(huán)執(zhí)行10次B.無限循環(huán)C.循環(huán)體語句一次也不執(zhí)行D.循環(huán)體語
句執(zhí)行一次
5.在下面的一維數(shù)組定義中,有語法錯誤。
A.inta[]={l,2,3}B.inta[10]={0}C.inta[]D.inta[5]
6.下列輸出字符,A,的方法中,錯誤的是()
A.cout<<put('A');
B.cout<<'A';
C.cout.put('A');
D.charA-A';cout<<A;
7.如果x=0,那么while(true)中的true與下面的條件()等價。
A.X=1B.X=1C.X>1D.X<1
8.下面程序的運行結(jié)果是#include<iostream.h>voidmain(){inti=l;
while(i<=8)if(++i%3!=2)continue;elsecout<<i;}
A.25B.36C.258D.369
9.下列說法不正確的是()。
A.基類指針可以指向它的公有派生類的對象
B.指向基類的對象的指針可以指向派生類的對象,因而可以訪問派生類
的對象的成員
C.基類指針不能指向其私有派生類的對象
D.指向派生類對象的指針不可以指向基類的對象
10.下列關(guān)于C++函數(shù)的描述中正確的是()。
A.主函數(shù)是程序的入口,它由用戶定義的函數(shù)調(diào)用
B.函數(shù)在調(diào)用之前必須先被聲明
C.每個用戶定義函數(shù)只能被其他函數(shù)調(diào)用一次
D.函數(shù)是C++中面向?qū)ο蟪绦蛟O(shè)計框架的基本組成單元
二、單選題(13題)
11.下面程序的結(jié)果是()。
#include(iostream.h>
classA
(
inta;
public:
A():a(l){}
voidshowa()(cout?a;}
};
classB
(
inta;
public:
B():a(2){}
voidshowa(){cout?a;}
classC:publicA,publicB
inta;
public:
C():a(3){}
voidshowa(){cout?a;}
);
voidmain()
(
CC;
showa();
}
A.lB.2C.3D.程序有錯誤
12.下列數(shù)據(jù)模型中,具有堅實理論基礎(chǔ)的是()。
A.層次模型B.網(wǎng)狀模型C.關(guān)系模型D.以上3個都是
13.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是
A.10B.8C.6D.4
14.按照“先進先出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()0
A.隊列B.棧C.雙向鏈表D.二叉樹
15.數(shù)據(jù)視圖的描述稱為()。
A.A.外模式B.內(nèi)模式C.概念模式D.存儲模式
16.語句int*P=&k;定義了指針P,與這個語句等效的語句序列是()。
A.int*p;P=&k;
B.int*P;P=k;
C.int*p;*P=&k;
D.int*p;*P=k;
17.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()。
A.靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)
B.類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員
C.類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值
D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用
18.數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各
種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及()。
A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲
19.只能作為成員函數(shù)重載的是
A.=B.++C.*D.new
20.下列運算符中,不能被重載的是()。
A.B.!=C..D.++
21.C++系統(tǒng)預(yù)定義了4個用于標(biāo)準數(shù)據(jù)流的對象,下列選項中不屬于此
類對象的是()。
A.coutB.cinC.cerrD.cset
22.下列對重載函數(shù)的描述中,錯誤的是()。
A.A.重載函數(shù)中不允許使用默認參數(shù)
B.重載函數(shù)中編譯是根據(jù)參數(shù)表進行選擇的
C不要使用重載函數(shù)來描述毫不相干的函數(shù)
D.構(gòu)造函數(shù)重載將會給初始化帶來多種方式
23.已知類A有公用數(shù)據(jù)成員a,并重載了=運算符,且有Aobj2;
constA*ptr=newA;,則下列語句錯誤的是()。
A.ptr->a=100;B.ptr=&obj2;C.ptr++;D.obj2=*ptr;
三、2.填空題(12題)
24.cout.put('A');,還可以表示為[]o
25.若有定義:doublea[3][5];那么數(shù)組a的最后一個元素是[]。
26.所有的函數(shù)模板定義都是以關(guān)鍵字【】開始的。
27.有如下程序:
#include<iostream>
usingnamespacestd;
classPARENT
{
public:
PARENT(){cout<<"PARENT";)
);
classSON:publicPARENT
{
public:
SON(){cout<<"SON";}
);
intmain()
{
SONson;
PARENT*p;
p=&son;
return0;
}
執(zhí)行上面程序的輸出是o
28.以下程序的輸出結(jié)果是o
#include<iostream.h>
unsignedfun(unsignednum)
{unsignedk=1;
do{k*=num%10;num/=10;}while(num);
returnk;
)
voidmain()
{unsignedn=26;
cout<<fun(n)<<endl;
29.在下面的程序的橫線處填上適當(dāng)?shù)恼Z句,使該程序的輸出為12。
#include<iostream.h>
usingnamespacestd;
classBase
(
public:
inta,b;
Base(inti){a=i;}
};
classDerived:publicBase
(
inta;
public:
Derived(intx):Base(x),b(x+1){};
voidshow()
(
,輸出基類數(shù)據(jù)成員a的值
cout<<b<<endl;
}
);
intmain()
(
Derivedd(l);
d.show();
return0;
30.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的集合。
31.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標(biāo)準,其中【】反映了模
塊內(nèi)各成分之間的聯(lián)系。
32.有以下程序:
#include<iostream.h>
classA
(
intx;
public:
A(inta)
(
x=a;
}
friendclassB;
);
ClassB(
public:
voidprint(Aa){
a.x-
cout<<a.x<<endl;
voidmain()
(
Aa(10);
Bb;
b.print(a);
程序執(zhí)行后的輸出結(jié)果是
33.若有以下程序:
#include<iostream>
usingnamespacestd;
classTestClass1
{
public:
TestClass1()
(
X=0;
intx;
);
classTestClass2:virtualpublicTestClassl
i
public:
TestClass2()
i
x=10;
}
};
classTestClass3:virtualpublicTestClass1
(
public:
TestClass3()
{
x=20;
}
};
classTestClass4:publicTestClass2,protectedTestClass3
(};
intmain()
(
TestClass4obj;
cout<<obj.x<<endl;
return0:
)
該程序運行后的輸出結(jié)果是o
34.C++語言標(biāo)識符是以字母或開頭的,由字母,數(shù)字和下劃線組
成的字符串。
35.Jackson方法是一種面向的結(jié)構(gòu)化方法。
四、程序改錯題(10題)
36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯。請改正程序中的錯誤,使程序輸出的結(jié)果為
100
37
32
注意:錯誤的語句在//******error******的下面,修改該語句即
可。
試題程序:
#include<iostream.h>
/*1**1**1**1**1**1**1**1**1**1**1*
//不不不不不不prrcr不不不不不不
voidmain
(
/*3**1**!?*1**1,*1**1**1*
//不不不不不不errcr小不不不不不
intm=0142:
//*1**1**1**1**t**1**1**1**1*
/個個個個個個prrcr不不不不不不
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯誤,請改正程序中的錯誤,使得程序輸出:
9,8,7,6,5
注意:錯誤的語句在/********error********/的下面,修改該語句即
可。其他的語句不能修改。
試題程序:
#include(iostream.h>
classTC
TC(inti)
(
m_i=i;
voidprint
i
cout?—m_i?,;
)
public:
intm_i;
intmain
!********error********/
inti;
TC04(10);
while(i>5)
i
I****************I
1++:
04.print;
cout?endl;
returnO;
38.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實
現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
II******error******卜|。
試題程序:
#include<iostream>
#include<fstream>
II********error********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
II********error********
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
!!********enor********
outl.puts(s[i]);
outl.close;
)
voidClearFile
{
ofstreamout1;
outl.open("l.txt");
outl.close;
)
intmain
(
chars"024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
39.使用VC++6.0打開考生文件夾下的源程序文件
1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)
的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在
試題程序:
#include<iostream>
#include<fstream>
!1********ej*j*or********
usingstd;
voidWriteFile(char*s)
ofstreamout1;
II********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
I!********erroi*********
outl.puts(s[i]);
outl.close;
voidClearFile
i
ofstreamout1;
outl.open("l.txt");
outl.close;
intmain
chars[1024];
ClearFile;
cout?"pleaseinputastrin9:"?endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
f\
40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程
序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(jié)果正
確。
程序輸出:
8
8
注意:錯誤的語句在/********error********/的下面。修改該語句
即可,其他的語句不能修改。
試題程序:
#include(iostream.h>
classCO
(
public:
I********ej*j*or********I
staticintn=O:
CO
(
n++:
CO
n—:
}:
I********ej*j*or********/
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********ej*j*or********/
eout?C.n?endl;
cout?C0::n?endl;
}
41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個
catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
0
ERROR
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面
試題程序:
#include<iostream.h)
intmain
(
try
{
throw("error");
)
II********enoj*********
catch(chars)
(
cout?s?endl;
)
try
(
throw((int)0);
)
II********error********
catch
(
cout?i?endl;
)
try
(
throw(O);
throw("error");
)
II********ej*j*or********
catch
cout?"ERROR"?endl;
returnO;
42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序
運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=1
number=10
number=100
注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******eiror******的下面。
試題程序:
#include<iostream.h>
classTC
{
public:
TC(inti)
(
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
cout?"number="?number?endl;
private:
intnumber;
);
voidmain
II********error********
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
II********ej*j*0j**^^0******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:
number=l
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
!1****************
TCobjl;
objl.Print;
TCobj2(3);
********error********
objl.number=10;
!1*************
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運
行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結(jié)果
為:
sizeof(Sl)=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":
II********ej*j*or********
assert(sizeof(s1)=3):
cout?"sizeof(sl)=5"?endl;
chars2[10]="ab":
II********error********
assert(sizeof(s2)—2);
cout?"sizeof(s2)=10"?endl;
chars3=23:
II********ei*i*0i*********
assert(sizeof(s3)=4);
cout?"sizeof(s3)=l"?endl;
return;
)
45.使用VC++6.0打開考生文件夾下的源程序文件1.cppo本程序要
求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸
入多行,當(dāng)輸入字符“?”時,默認字符輸入結(jié)束,最后把結(jié)果輸出到屏幕
中。
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)
構(gòu),錯誤的語句在//******errc)r******的下面。
試題程序:
#include<iostream.h>
voidmain
inti=O;
charstr[120];
cout?"Enterastringendwith?."?endl;
Ii********error********
cin.getline(str,120);
II****************
while(str)
{
II********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout?str?endl;
return;
}
五、綜合應(yīng)用題(2題)
,,
46.(l)“while”應(yīng)改為"while(infile.get(ch))o
(2)應(yīng)添加"bur[len++]=ch;bur[len]=ch;len++;
(3)應(yīng)添力/'outfile2?bur[i++];”或"outfile2?buf[i];i++;”。
(4)“TCobj「'應(yīng)改為"TCobi("in.txt");
【解析】本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個字符,
并判斷是否到文件結(jié)尾,所以應(yīng)使用get函數(shù);第2處應(yīng)將ch存入buf
數(shù)組,同時讓len增1;第3處將buf中的字節(jié)輸出給outfile2,注意同
時讓i增1,否則while循環(huán)將進入死循環(huán);第4處TC只確一個帶char*
參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對象時必須使用構(gòu)造參數(shù),根據(jù)題意這個參
數(shù)應(yīng)該是“"in.txt"”。
47.使用VC++6.0打開源程序文件3.cpp。其中類TC用于把文件
輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的
大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)?/p>
in.txt文件中的內(nèi)容輸出到
屏幕,并且將文件按照以上方式分割,存于文件。utl.txt和。ut2.txt
中。
其中定義的類并不完整,按要求完成下列操作,將類的定義補充完
整。
(1)從輸入文件中獲得一個字符,并判斷是否到文件結(jié)
尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當(dāng)?shù)恼Z句。
⑵把獲得的輸入文件的內(nèi)容存儲到bur中,并且用len
記錄下文件的長度。請在注釋2后添加適當(dāng)?shù)恼Z句。
(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請
在注釋3后添加適當(dāng)?shù)恼Z句。
(4)使用文件流對象打開輸入文件in.txt,請在注釋4
后添加適當(dāng)?shù)恼Z句。
注意:增加代碼或者修改代碼的位置已經(jīng)用符號表示出來。請不要修
改其他的程序代碼。
試題程序:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h)
classTC
{
public:
TC(char*fileName)
(
len=O;
fstreaminfile;
infile.open(fileName,ios::in);
charch;
while
(
cout?ch;
IIsj*
}
infile,close;
}
voidsplit
(
fstreamoutfilel;
fstreamoutfile2;
outfilel.open("outl.txt",ios::out);
outfile2.open("out2.txt",ios::out);
inti=0:
for(i=0;i<len/2;i++)
(
outfilel?buf[i];
)
do
(
)
while(i!=len);
outfilel.close;
outfile2.close;
)
prwate:
intlen;
charbuf[1024];
};
voidmain
(
//********4********
TCobj;
obj.split;
return;
六、3.綜合應(yīng)用題(2題)
48.使用VC6打開考生文件夾下的工程testll_3o此工程包含一個
testllj.cpp,其中定義了類CPosition,但該類的定義都并不完整。請按
要求完成下列操作,將類CPosition的定義補充完整。
⑴在類定義外完成重載的兩個構(gòu)造函數(shù)CPosition。和CPosition(double
dx,doubledy),其中前者為不帶參數(shù)的構(gòu)造函數(shù),使CPosition對象的
默認值為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:
CPositionQ;
CPosition(doubledx,doubledy);
doublegetx();
doublegety();
H**2**
doubledistance(doublebx,doubleby);
private:
doublex;
doubley;
);
//**]**
(
x=0;y=0;
}
CPosition::CPosition(doubledx,doubledy)
(
x=dx;y=dy;
)
doubleCPosition::getx()
{
returnx;
}
doubleCPosition::gety()
(
returny;
)
doubleCPosition::distance(doublebx,doubleby)
(
H**3**
voidmain()
doublea,b;
cout<<"Inputx,ypositionofapoint:";
cin>>a>>b;
CPositionpsA(a,b);
cout<<"Inputx,ypositionofanotherpoint:";
cin>>a>>b;
cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;
}
49.使用VC6打開考生文件夾下的工程MyProjl3。此工程包含一個源程
序文件MyMainl2.cppo程序中定義了兩個類Base和Derived,但類的
定義并不完整。
請按要求完成下列操作,將類的定義補充完成:
①定義類shapes的保護成員x和y,它們都是整型變量。請在注釋“//*
*1**"之后添加適當(dāng)?shù)恼Z句。
②完成構(gòu)造函數(shù)shapes(intd,intw)定義,使類shapes的保護成員x、y分
別初始化為d、w,并分別具有默認值0、0。請在注釋“〃**2**”之后添
加適當(dāng)?shù)恼Z句。
③完成類shapes的成員函數(shù)setvalue(intd,intw)的定義,shapes類的數(shù)
據(jù)成員x和y分別被設(shè)置成d和w。請在注釋“//**3**”之后添加適當(dāng)
的語句。
④將類shapes的成員函數(shù)voiddisp。設(shè)置成純虛函數(shù)。請在注釋“〃**4*
*''之后添加適當(dāng)?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序文件MyMainl3.cpp清單如下:
//MyMainl3.cpp
#include<iostream>
usingnamespacestd;
classshapes
{
〃***]***
public:
〃***2***
voidsetvalue(intd,intw)
(
〃***3***
)
〃***4***
};
classsquare:publicShapes
(
public:
voiddisp()
{
cout<<x*y<<endl;
}
);
intmain()
{
shapes*ptr;
squaresi;
pt『&sl;
ptr->setvalue(10,5);
ptr->disp();
return0;
參考答案
l.C解析:本題考核C++的文件I/O操作。函數(shù)good()表示剛進行的操
作成功時返回true,否則返回false,所以可以通過類ofstream的對象
outfile調(diào)用good。函數(shù)來檢測剛才文件打開是否成功。題中在建立文件
流對象的同時打開文件,若打開失敗則返回fail。所以“outfile”也可以用
作判斷打開文件成功與否的條件。
2.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受
限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許
在表的一端進行插入或刪除操作,是一種‘后進先出'的線性表;而隊列只
允許在表的一端進行插入操作,在另一端進行刪除操作,是一種先進先出
'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分
解后的復(fù)雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)
據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種
耦合方式。
3.C
4.C解析:本題中,首先將0賦給k,表達式變?yōu)?,跳出循環(huán),沒有執(zhí)
行循環(huán)體語句。解答本題的關(guān)鍵是掌握while語句。
5.C解析:C選項沒有初始化,而且沒有指定元素的個數(shù),所以是錯誤
的。
6.A
7.A
8.C解析:應(yīng)該先做++運算,然后進行%運算,最后比較不等式,實際
上最后輸出的結(jié)果就是被3除,余數(shù)為2的不大于8的數(shù)。
9.B解析:其前半句是正確的,但后半句是錯誤的。它可以訪問派生類
的對象中由基類繼承下來的成員,但不可訪問派生類新增成員。
10.B
ll.CC0【解析】類A,類B,中都有showa函數(shù),類C繼承后再次重寫
showa函數(shù)就解決了繼承的二義性,這時C.showa函數(shù)顯示的就是類
C中的showa的值。
12.C在數(shù)據(jù)庫設(shè)計中,目前常用的數(shù)據(jù)模型主要有三種,分別是層次模
型、網(wǎng)狀模型和關(guān)系模型。
層次模型是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。我們通常把滿足以下兩
個條件的數(shù)據(jù)模型稱為層次模型。
(1)有且僅有一個結(jié)點無雙親,這個結(jié)點稱為根結(jié)點。
(2)其他結(jié)點有且僅有一個雙親。
層次模型用樹形結(jié)構(gòu)來表示各實體與實體間的聯(lián)系。實體是數(shù)據(jù)庫中數(shù)
據(jù)描述的對象,可以是一個人、一種商品等。在層次模型中,每個結(jié)點
表示一個記錄類型,記錄之間的聯(lián)系用結(jié)點之間的連線表示,這種聯(lián)系
是父子之間一對多的聯(lián)系。記錄就是描述實體的相關(guān)數(shù)據(jù)。
如果取消層次模型中的兩個限制,即允許一個以上的結(jié)點無雙親,則每
一個結(jié)點可以有多個父結(jié)點,便形成了網(wǎng)狀。我們把網(wǎng)狀表示實體之間
聯(lián)系的模型稱為網(wǎng)狀模型。
關(guān)系模型用表格形式表示實體類型及其實體間的聯(lián)系。關(guān)系模型是目前
最重要的一種模型,它是建立在嚴格的數(shù)學(xué)概念的基礎(chǔ)上的,具有最堅
實的理論基礎(chǔ)。關(guān)系模型的基本數(shù)據(jù)結(jié)構(gòu)是二維表,每一張二維表稱為
一個關(guān)系。
13.C
根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是
比度為2的結(jié)點多一個。
14.A
15.A解析:外模式也稱子模式,它是數(shù)據(jù)庫用戶能夠看見和使用的局
部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它是由概念模式推導(dǎo)而出來的,是數(shù)
據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。
16.A
解析:本題考查的知識點是:指針的賦值。題目中的語句int*p=&k;
有兩個作用:首先,定義了一個血型指針p;然后,將變量k的地址
&k賦給剛定義的指針p。所以等效的語句序列為:int*p;p=&k;,應(yīng)
該選擇Ao
17.A靜態(tài)成員表示整個類范圍共享的信息;必須對靜態(tài)數(shù)據(jù)成員進行初
始化;靜態(tài)數(shù)據(jù)成員是屬于類的,不能通過類的對象調(diào)用。
18.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學(xué)科,主要研究和討論以下三
個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)
據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲
關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。
19.A解析:運算符重載為成員函數(shù)的形式為:函數(shù)類型operator運算符
(形參表){函數(shù)體;};運算符重載為友元函數(shù)的形式為:friend函數(shù)類型
operator運算符(形參表){函數(shù)體;}。一般來講,單目運算符最好重載為
成員函數(shù),雙目運算符最好重載為友元函數(shù)。=、口、()、->以及所有的
類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載。
20.C
C++不能重載的運算符只有5個,即$”、“::”、“?:”、
“sizeoE,故本題答案為C。
21.D
C++標(biāo)準數(shù)據(jù)流的對象分別足cout、cin、CelT>cl09,所以本題答案為
Do
22.A
Ao【解析】選項A中,重載函數(shù)中是允許使用默認參數(shù)的;為了使
重載函數(shù)有意義,不要使用重載函數(shù)來描述毫不相干的函數(shù);重載函
數(shù)中編譯是根據(jù)參數(shù)表進行選擇的,包括參數(shù)的個數(shù)和類型。
23.A
Ao【解析】本題考查const修飾符的作用。注意,const位置不同,其
修飾的部分也是不同的。本題中const修飾的是ptr所指的對象本身,
所以,ptr可以重新指向新的對象,而ptr->a則無法被更新。
24.cout<<'A';cout<<'A';解析:本題考查的是C++語言的流輸出操
作。cout是C++語言定義好的輸出流對象,其中包括成員函數(shù)put(char
C),其功能是輸出一個字符到屏幕,實際上C++語言中已經(jīng)重載了操作
符“〈<”作為流輸出操作符。
25.a[2][4]a[2][4]解析:C++中,數(shù)組每一維的下標(biāo)都是從0開始,到n-
1結(jié)束。因此a[3][5]共有15個元素,最后一個元素是a[2][4]。
26.template
27.PARENTSONPARENTSON解析:此題考查的是派生類和基類的構(gòu)
造函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序為:首先調(diào)用基類的構(gòu)造函數(shù),調(diào)
用順序按它們被繼承時說明的順序;然后調(diào)用子對象的構(gòu)造函數(shù),調(diào)用
順序按它們在類中說明的順序;最后是派生類構(gòu)造函數(shù)中的內(nèi)容。SON
son;執(zhí)行時首先調(diào)用基類的構(gòu)造函數(shù),輸出“PARENT”,然后調(diào)用派生
類的構(gòu)造函數(shù)輸出“SON”。需要注意的是,語句PARENT*p;只是定義
一個PARENT類的指針,并不調(diào)用構(gòu)造函數(shù)。
28.1212解析:函數(shù)有一個形參num,循環(huán)前變量k置1,循環(huán)中,表
達式num%10是取num的個位,將Hum的個位值累乘于k中,然后
num除以10。循環(huán)直至num為0結(jié)束,這是逐一求出num十進制表示
的各位數(shù)字,并累乘于變量k的循環(huán)。函數(shù)最后返回ko函數(shù)fun的功
能是求整數(shù)的各位十進制數(shù)的積。
29.cout<<Base::acout<<Base::a解析:此題考查的是基類和派生類的
構(gòu)造函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序為:首先調(diào)用基類的構(gòu)造函數(shù),
調(diào)用順序按它們被繼承時說明的順序;然后調(diào)用子對象的構(gòu)造函數(shù),調(diào)
用順序按它們在類中說明的順序,?最后是派生類構(gòu)造函數(shù)中的內(nèi)容。此
題要求結(jié)果是輸出12,分析題目,首先調(diào)用基類的構(gòu)造函數(shù),然后是調(diào)
用子對象的構(gòu)造函數(shù),橫線處要求輸出基類成員a的值,填入cout<<
Base::a即可。
30.軟件工具軟件工具解析:軟件開發(fā)環(huán)境或稱軟件工程環(huán)境是全而支
持軟件開發(fā)全過程的軟件工具集合。這些軟件工具按照一定的方法或模
式組合起來,支持軟件生命周期內(nèi)的各個階段和各項任務(wù)的完成。
31.內(nèi)聚內(nèi)聚
32.99解析本題考核友元類的應(yīng)用。在程序中,類B是類A的友元類,
因此,在類B的所有成員函數(shù)中均可訪問類A的任何成員。在main()
中,先定義類A的一個對象a(10)和類B的一個對象b。然后通過對象
b調(diào)用其成員函數(shù)print輸出對象a的私有成員x的值減1即9。
33.20
34.下劃線下劃線
35.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)
36.(l)ttvoidmain,,o
(2)uintm=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)分另I」改成“intm=0144;”,
“intn=0x25;”或"intn=0><25;
37.(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:“,否則該類無法被實例
化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造
參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i
每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則
循環(huán)永遠不會退出。
38.(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)準命名空間std,
對于C++中引入標(biāo)準命名空間的格式,缺少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]);
39.(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;”是在程序中引入標(biāo)準命名空間std,
對于C++中弓I入標(biāo)準命名空間的格式,缺少namespace,所以第1處
的語句修改為"usingnamespacestd;"。第2處,調(diào)用成員函數(shù)open中,
輸入、輸出方式是在ios類中定義的,所以“outl.open('l.txt',binary|
app);”語句缺少類ios,即第2處的語句修改為"outl.open('l.txt:ios::
binary|ios::app);”。第3個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所
以第3處的語句修改為“outl.put(s[i]);
40.(l)“staticintn=O"應(yīng)改為"staticintn;
(2)uintCO::n;”應(yīng)改為"intCO::n=0;
(3)€tcout?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;"。
41.(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)識前的異常拋出語句為
“throw((int)0);",其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)
該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配
的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處
的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類
型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修
改為“catch(…)”。
42.(1)應(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)該使用定義的對象,即。bj2,所以將語句修改為
“obj2.SetNumber(lOO);
43.(1)應(yīng)改為"TCobjl(l);
\n(2)應(yīng)改為“Objl.SetNumber(10);”。
\n(3)應(yīng)改為“0bj2.SelNumber(100);”。
\n【解析】本題第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);"。
44.(1)應(yīng)改為"assert(sizeof(s1)=4);
\n(2)應(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)生中斷異常。
4tassert(sizeof(s1)=3);”語句中“sizeof(sl)==3”為假,這會使程序產(chǎn)生異
常,不能正常執(zhí)行。因為strl的值為abc,但是它還有一個尾符,它的
長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(sl)=4)7。
str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)=10);”。
charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為
44assert(sizeof(s3)=1);
45.(1)應(yīng)改為"ein.getline(str,120,?);
也⑵應(yīng)改為“w如le(str[i])”。
\n⑶應(yīng)改為“if(str[i]>=a&&str[i]<=2)”。
\n【解析】本題中要求以輸入字符“?”為結(jié)束符,用于字符輸入的流成員
函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個
數(shù),終止標(biāo)志字符字所以第1處改為“cin.getline(str,120,?);“。第
2處的“while(str)”語句應(yīng)該是判斷字符串str中的每一個字符是
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 沙漠區(qū)橋梁防曬措施技術(shù)方案
- 卸貨流程培訓(xùn)
- 德佑房屋租賃合同
- 秘書工作總結(jié)
- 急診科出科護理查房
- 求職簡歷教育模塊設(shè)計要點
- 中職學(xué)校心理健康教育
- 結(jié)石患者術(shù)前術(shù)后護理
- 幼兒園健康標(biāo)志趣味認知課程
- 文案策劃新人培訓(xùn)
- 公安院校公安專業(yè)招生政治考察表(雙面打印)
- 充血性心力衰竭患者利尿劑抵抗
- 光纖研磨工藝
- (2023版)高中化學(xué)新課標(biāo)知識考試題庫大全(含答案)
- 水土保持工作情況匯報
- 裝飾裝修工程概況描述(參考)
- SJ2D雙微機自動準同期裝置說明書
- 中國移動熱線人工優(yōu)秀服務(wù)藍圖
- 義務(wù)教育英語課程標(biāo)準(2022年版)知識點匯總
- 低應(yīng)變檢測技術(shù)原理講義圖文豐富
- 普通貨物運輸安全管理制度(全套)
評論
0/150
提交評論