2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)_第1頁
2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)_第2頁
2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)_第3頁
2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)_第4頁
2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2022年廣東省佛山市全國計算機等級考試C++語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________

一、1.選擇題(10題)1.有如下程序:classBase1{public:inta;voidb(){return};voidc(float){a=float;}};classBase2{public:voidb(){}voidc(){}private:inta;};classDerived:publicBasel,publicBase2{public:voidb(){}};voidmain(){Derivedobj;obj.a=1;//①obj.b();//②obj.c(10);//③}下面各項對語句①②③的描述中,正確的是()。

A.語句①②③都有二義性

B.語句①③有二義性,②沒有二義性

C.語句①有二義性,②③沒有二義性

D.語句①②有二義性,③沒有二義性

2.設a=1;b=2;,則(a++)+b和a+++b這兩個表達式的值分別為()。

A.3,3B.3,4C.4,3D.4,4

3.非空的循環(huán)單鏈表head的尾結點(由p所指向),滿足______。A.A.p->next==NULLB.p==NULLC.p->next=headD.p=head

4.下面運算符不能被友元函數(shù)重載的是()。

A.+B.=C.*D.<<

5.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是()。A.A.數(shù)據(jù)分布性和邏輯整體性B.位置透明性和復制透明性C.分布性D.數(shù)據(jù)冗余

6.數(shù)據(jù)庫的故障恢復一般是由()

A.數(shù)據(jù)流圖完成的B.數(shù)據(jù)字典完成的C.DBA完成的D.PAD圖完成的

7.對于int*pa[5];的描述,()是正確的。

A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素

B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量

C.pa[5]表示某個數(shù)組的第5個元素的值

D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針

8.下面程序的運行結果為#include<iostream.h>classA{intnum;public:A(inti){num=i;}A(A&a){num=a.num++;}voidprint(){cout<<num;}};voidmain(0{Aa(1),b(a);a.print();b.

A.11B.12C.21D.22

9.用樹形結構來表示實體之間聯(lián)系的模型稱為()。

A.關系模型B.層次模型C.網(wǎng)狀模型D.數(shù)據(jù)模型

10.有以下程序:#include<iostream.h>#include<iomanip.h>voidmain(){cout.fill('*');cout.width(10);cout,<setiosflags(ios::left)<<123.45<<endl;}程序執(zhí)行后的輸出結果是()

A.****123.45B.**123.45**C.123.45****D.***123.45*

二、單選題(13題)11.第21題

以下有關類與結構體關系的敘述不正確的是()。A.結構體中只包含數(shù)據(jù);類中封裝了數(shù)據(jù)和操作

B.結構體的成員對外界通常是開放的;類的成員可以被隱蔽

C.用struct不能聲明一個類型名;而class可以聲明一個類名

D.結構體成員默認為public;類成員默認為private

12.設有下列程序段:chars[20]="Beijing",*P;P=S;則執(zhí)行“p=s;”語句后,下列敘述正確的是()。

A.可以用*P表示s[0]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.S和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相同

13.關于類模板,下列表述不正確的是

A.用類模板定義一個對象時,不能省略實參

B.類模板只能有虛擬類型參數(shù)

C.類模板本身在編譯中不會生成任何代碼

D.類模板的成員函數(shù)都是模板函數(shù)

14.下面關于數(shù)組的描述錯誤的是()。

A.在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針

B.長度為n的數(shù)組,下標的范圍是0~n-1

C.數(shù)組的大小必須在編譯時確定

D.數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)

15.下列程序的運行結果為()。#includevoidmain{inta=2:intb=a+1:cout<<a/b<<endl:A.0.66667B.0C.0.7D.0.66666666…

16.下列敘述中正確的是()。

A.循環(huán)隊列有隊頭和隊尾兩個指針,因此循環(huán)隊列是非線性結構

B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況

C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況

D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定

17.類模板template<classT>classX{…},其中友元函數(shù)f對特定類型T(如int),使函數(shù)f(x<int>)成為x<int>模板類的友元,則其說明為()。

A.A.friendvoidf();

B.B.friendvoidf(x<T>);

C.C.friendvoidA::f();

D.D.friendvoidC<T>::f(x<T>);

18.以下不能作為輸出流對象的是()。A.文件B.內(nèi)存C.鍵盤D.顯示器

19.下列數(shù)據(jù)結構中,按先進后出原則組織數(shù)據(jù)的是()

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

20.數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的()。A.存儲結構B.物理結構C.邏輯結構D.物理和存儲結構

21.有如下程序:#include<iostream>usingnamespacestd;intmain(){int*P;*P=9:cout<<"ThevalueatP:"<<*P;return0;}編譯運行程序將出現(xiàn)的情況是()。A.編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件

B.運行時一定輸出ThevalueatP:9

C.運行時一定輸出ThevalueatP:*9

D.運行時有可能出錯

22.在下列枚舉符號中,用來表示“相對于當前位置”文件定位方式的是()。

A.ios_base::cur

B.ios—base::beg

C.los_base::0ut

D.ios—base::end

23.關于純虛函數(shù),下列表述中正確的是()。

A.純虛函數(shù)是沒有給出實現(xiàn)版本(即無函數(shù)體定義)的虛函數(shù)

B.純虛函數(shù)的聲明總是以“=0”結束

C.派生類必須實現(xiàn)基類的純虛函數(shù)

D.含有純虛函數(shù)的類不可能是派生類

三、2.填空題(12題)24.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

25.下列程序的輸出結果是【】。

#include<iostream.h>

classMyClass

{

public:

intnumber;

voidset(inti);

};

intnumber=3;

voidMyClass::set(inti)

{

number=i;

}

voidmain()

{

MyClassmy1;

intnumber=10;

my1.set(5),

cout<<my1,number<<',';

my1.set(number);

cout<<my1.number<<',';

my1.set(::number);

cout<<my1.number<<'.';

}

26.在算法正確的前提下,評價一個算法的兩個標準是【】。

27.基類為虛函數(shù),撤銷對象調(diào)用析構函數(shù)時,采用______聯(lián)編。

28.人員基本信息一般包括身份證號、姓名、性別、年齡等。其中可以作為主關鍵字的是______。

29.下列函數(shù)的功能是【】。

#include<iostream.h>

intFunc(inta,intb)

{

if(a>b)return1;

elseif(a==b)return0;

elsereturn-1;

}

30.在下面函數(shù)的橫線處填上適當?shù)膬?nèi)容使該函數(shù)能夠利用遞歸方法求解字符串str的長度(不得使用系統(tǒng)提供的字符串處理函數(shù))。

intGetLen(char*str

{

if(【】)return【】;

elsereturn1+GetLen(str+1);

}

31.內(nèi)聯(lián)函數(shù)是通過【】來實現(xiàn)的,因此內(nèi)聯(lián)函數(shù)是真正的函數(shù)。

32.C++語言的基本控制結構為順序結構、選擇結構和【】。

33.如下程序的輸出結果是______。

#include<iostream>

usingnamespacestd;

classPet{

charname[10];

public:

Pet(char*nanle){strcpy(this->name,name);}

constchar*getName()const{returnname;}

virtualvoidcall()eonst=0;

};

classDog:publicPet{

public:

Dog(char*name):Pet(name){}

voidcall()eonst{cout<<"汪汪叫";}

};

classCat:publicPet{

public:

Cat(char*name):Pet(name){}

voidcall()const{eout<<"喵喵叫";}

};

intmain(){

Pet*petl=newDog("哈克"),*pet2=newCat("吉米");

eout<<petl->getName();petl->call();eout<<endl;

cout<<pet2->getName();pet2->call();eout<<endl;

return0;

}

34.有以下復數(shù)類的聲明,請補充完整。

Classcomplex{

doublereal;//實部

doubleimag;//虛部

public:

complex(doublex,doubley){

real=x:

imag=y;

}

complexoperator+(complexe){//重載加法運算符“+”

returncomplex(______)

}

};

35.以下程序的執(zhí)行結果是______。

#include<iostream.h>

#include<iomanip.h>

voidprint(intn)

{

if(n!=0)

{

print(n-1);

for(inti=1;i<=n;i++=

cout<<setw(3)<<i;

cout<<endl;

}

}

voidmain()

{

print(4);

}

四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}

37.使用VC++6.0打開考生文件夾下的源程序文件

1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現(xiàn)的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在

//******error******的下面。

試題程序:

#include<iostream>

#include<fstream>

//********error********

usingstd;

voidWriteFile(char*s)

{

ofstreamout1;

//********error********

out1.open("1.txt",binary|app);

for(inti=0;s[i]!=0;i++)

{

//********error********

out1.puts(s[i]);

}

out1.close;

}

voidClearFile

{

ofstreamout1;

out1.open("1.txt");

out1.close;

}

intmain

{

chars[1024];

ClearFile;

cout<<"pleaseinputastrin9:"<<endl;

cin.getline(s,1024);

WriteFile(s);

return0;

}

38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為

Constructor,i=0,

Destructor

注意:錯誤的語句在//******error******的下面,修改該語句即可。

試題程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

//******error******

TC:TC

{

cout<<"Constructor"<<",";

i=0;

)

//******error******

TC:display

{

tout<<"i="<<i<<","<<endl;

}

//******error******

TC:TC

{

COUI<<"Destructor"<<endl:

}

voidmain

{

TCa;

a.display;

}

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h)

intmain

{

try

{

throw("error");

}

//********error********

catch(chars)

{

cout<<s<<endl;

}

try

{

throw((int)0);

}

//********error********

catch

{

cout<<i<<endl;

}

try

{

throw(O);

throw("error");

}

//********error********

catch

{

cout<<"ERROR"<<endl;

}

return0;

}40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結果正確。程序輸出:88注意:錯誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}41.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為Constructor,i=0,Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出到屏幕中。

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。

試題程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

//********error********

cin.getline(str,120);

//********error********

while(str)

{

//********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

}

cout<<str<<endl;

return;

}

43.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?”時,默認字符輸入結束,最后把結果輸出到屏幕中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}45.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結果為:number=1number=10number=100注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>classTC{public:TC(inti){number=i;}voidSetNumber(intm){number=m;}intGetNumberconst{returnnumber;}voidPrintconst{cout<<"number="<<number<<endl;}private:intnumber;};voidmain{//********error********TCobjl;objl.Print;TCobj2(3);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print;obj2.Print;}五、綜合應用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp,其中定義了類BA、PA1和PA2,其中PA1類由BA類公有派生,PA2類由PA1類公有派生。上述3個類的定義并不完整,請按要求完成下列操作,將程序補充完整。程序輸出結果如下:1O51057(1)定義類BA的構造函數(shù),該構造函數(shù)有一個整型的參數(shù)m,在構造函數(shù)中將m賦值給數(shù)據(jù)成員a。請在注釋1之后添加適當?shù)恼Z句。(2)定義類PA1的構造函數(shù),該構造函數(shù)有兩個整型的參數(shù)m和n,在構造函數(shù)中將m賦值給數(shù)據(jù)成員b,將n作為基類BA構造函數(shù)的參數(shù)值傳人。請在注釋2之后添加適當?shù)恼Z句。(3)定義類PA2的構造函數(shù),該構造函數(shù)有3個整型的參數(shù)m、n和k,在構造函數(shù)中請將m賦值給數(shù)據(jù)成員c,將n和k分別賦值給基類PA1構造函數(shù)的參數(shù)m和n。請在注釋3之后添加適當?shù)恼Z句。(4)完成類PA2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類成員函數(shù),輸出基類私有成員a、b及類PA2自身的數(shù)據(jù)成員C的值,上述3個值在輸出時用空格隔開。請在注釋4之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。試題程序:#include(iostream.h>classBA{inta;public://********1********intgeta{returna;}};classPAl:publicBA{intb;public://********2********intgetb{returnb;}};classPA2:publicPAl{intC;public://********3********voidshow{//********4********}};voidmain{PA2a(7,5,10);cout<<a.geta<<endl;cout<<a.getb<<endl;a.show;}47.請使用VC6或使用【答題】菜單打開考生文件夾proj3下的工程proj3,其中聲明的DataList類,是一個用于表示數(shù)據(jù)表的類。DataList的重載運算符函數(shù)0perator+,其功能是求當前數(shù)據(jù)表與另一個相同長度的數(shù)據(jù)表之和;即它返回一個數(shù)據(jù)表,其每個元素等于相應兩個數(shù)據(jù)表對應元素之和。請編寫這個operator+函數(shù)。程序的正確輸出應該是:兩個數(shù)據(jù)表:1,2,3,4,5,63,4,5,6,7,8兩個數(shù)據(jù)表之和:4,6,8,10,12,14要求:補充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結果輸出到文件。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{retumlen;}doublegetElement(inti)Consttreturnd[i];}DataListoperator+(ConstDataList&list)Const;//兩個數(shù)據(jù)表求和voidshowConst;//顯示數(shù)據(jù)表};voidwriteToFile(Char$,ConstDataList&);//main.Cpp#inClude”DataList.h”DataList::DataList(intlen,doubledata[]):len(ien){d=newdouble[1en];for(inti=0;i<len;i++)d㈨i=(data==NULL?0.0:data[i]);}DataList::DataList(DataList&data):len(data.1en){d=newdouble[1en];for(inti=0;i<len;i++)d[i]=data.d[i];DataListDataList::0perator+(Con8tDataList&list,)Const{//兩個數(shù)據(jù)表求和double*dd=newdouble[1ist.1ensth];//********333********//********666********returnDataList(1ist.1ength,dd);}voidDataList::showConst{//顯示數(shù)據(jù)表fr(int。i=0;i<len-1;i++)eout<<d[i]<<”,”;Cout<<d[1en-1]<<endl;intmain{doublesl[]={1,2,3,4,5,6};doubles2[]={3,4,5,6,7,8};DataListlist1(6,sl),list2(6,s2);//定義兩個數(shù)據(jù)表對象eout<<”兩個數(shù)據(jù)表:”<<endl:listl.show:list2.show;eout<<endl<<”兩個數(shù)據(jù)表之和:”<<endl:(1istl+list2).show;writeToFile(””,listl+list2);return0:六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test7_3,此工程包含一個源程序文件test7_3.cpp,其中含有一個類Circle的定義,但該類的定義并不完整。請按要求完成下列操作,將類Circle的定義補充完整。

(1)為類Circle增加一個構造函數(shù),該函數(shù)有一個參數(shù),并在構造時將該參數(shù)值賦給成員radius。將該函數(shù)實現(xiàn)為一個非內(nèi)聯(lián)函數(shù),并且使用參數(shù)列表的方式將類成員賦值。請在注釋“//**1**”之后添加適當?shù)恼Z句。

(2)為類Circle增加一個成員函數(shù)print(),使得可以輸出有關圓的信息,比如下列程序

Circlec;

c.SetRadius(5);

c.Print();

將輸出:Thecirclehasradiusof5!

請在注釋“//**2**”之后添加適當?shù)恼Z句。

(3)完成友元函數(shù)voidCompareR(Circle*cl,Circle*c2)的定義,在屏幕中輸出c1與c2比較radius大小結果,要求使用if-else結構完成。請在注釋“//**3**”之后添加適當?shù)恼Z句。

輸出結果如下;

Thecirclehasradusof5!

Thecirclehasradiusof10!

c1<c2

注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。

源程序文件test7_3.cpp清單如下:

#include<iostream.h>

classCircle{

public:

Circle():radius(5){}

//**1**

voidSetRadius(intr){radius=r;}

intGetRadius(){returnradius;}

//**2**

friendvoidCompareR(Circle*c1,Circle*C2);

private:

intradius;

};

voidCompareR(Circle*c1,Circle*C2)

{

//**3**

cout<<"c1>c2"<<endl;

else

if((c1->GetRadius())==(c2->GetRadius()))

cout<<"c1=c2"<<endl;

else

if((c1->GetRadius())<(c2->GetRadius()))

cout<<"c1<c2"<<endl;

}

voidmain()

{

Circlec1;

c1.SetRadius(5);

C1.Print();

Circlec2(10);

c2.Print();

CompareR(&c1,&c2);

}

49.使用VC6打開考生文件夾下的工程test40_3。此工程包含一個test40_3.cpp,其中定義了類CVector,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。

(1)完成類CVector構造函數(shù)的定義,把傳入的int型參數(shù)a和b分別賦值給類的成員變量x和y。請在注釋“//**1**”之后添加適當?shù)恼Z句。

(2)完成類CVector的“+”運算符重載函數(shù)的定義,使Cvector類的兩個對象相加時可以直接使用符號“+”,并且結果仍然為類Cvector的對象,請在注釋“//**2**”之后添加適當?shù)恼Z句。

(3)在主函數(shù)中添加適當?shù)恼Z句,把類Cvector的對象a和b相加,并且把結果保存在對象c中,最后以“x,y”的形式輸出在屏幕上,請在注釋“//**3**”之后添加適當?shù)恼Z句。

源程序文件test40_3.cpp清單如下:

#include<iostream.h>

classCVector

{

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

};

CVector::CVector(inta,intb)

{

//**1**

}

CVectorCVector::operator+(CVectorparam)

{

//**2**

temp.y=y+param.y;

return(temp);

}

intmain()

{

CVectora(3,1);

CVectorb(1,2);

CVectorc;

//**3**

return0;

}

參考答案

1.B解析:C++中二義性問題的檢查在訪問控制權限或類型檢查之前進行,即訪問權限的不同或類型不同不能解決二義性問題。所以語句①③有二義性。由于Derived中又重新定義了同名成員函數(shù)b(),所以b()函數(shù)的調(diào)用就不存在二義性問題。

2.A

3.C解析:循環(huán)鏈表就是將鏈表的最后一個結點指向鏈表頭結點(或第一個結點),即p->next=head。

4.B解析:=,(),[],->運算符不能夠重載為類的友元函數(shù)。

5.D解析:分布式數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)分布性、邏輯整體性、位置透明性和復制透明性的特點,其數(shù)據(jù)也是分布的;但分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)經(jīng)常重復存儲,數(shù)據(jù)也并非必須重復存儲,主要視數(shù)據(jù)的分配模式而定。若分配模式是一對多的,即一個片段分配到多個場地存放,則是冗余的數(shù)據(jù)庫,否則是非冗余的數(shù)據(jù)庫。

6.C解析:數(shù)據(jù)庫管理員DBA(DataBaseAdministrator)對數(shù)據(jù)庫進行統(tǒng)一管理、包括數(shù)據(jù)庫故障恢復,數(shù)據(jù)更新、維護優(yōu)化等操作。

7.D

8.C解析:本題考查考生對拷貝構造函數(shù)的掌握。因為++運算是右結合的,所以在使用a對b賦值時,b的num變?yōu)?而a的num變?yōu)?(先賦值再自加)。

9.B解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有3種:層次模型、網(wǎng)狀模型和關系模型。在層次模型中,實體之間的聯(lián)系是用樹結構來表示的,其中實體集(記錄型)是樹中的結點,而樹中各結點之間的連線表示它們之間的關系。所以,本題的正確答案是B。

10.C

11.C類和結構體有著密切的血緣關系。類可以看做是將動作和數(shù)據(jù)都封裝的結構體,當然結構體本身是沒有動作的。另外,結構體中的成員對外界訪問是沒有限制的,而類的成員卻是有不同的訪問級別限制。

12.AA?!窘馕觥砍绦蚨x了字符數(shù)組S和字符型指針變量P,并且使P指向數(shù)組S的首地址,執(zhí)行P=S語句后,*P表示s[o];S數(shù)組中元素的個數(shù)和P所指字符串長度不相等,s數(shù)組中包括字符串結束標志“\0”,而P所指字符串不包括“\0”,數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容不相同,數(shù)組中存放的是字符串,而指針變量P存放的是數(shù)組的首地址。

13.B解析:本題考核類模板的概念。類模板就是一系列相關類的模型或樣板,這些類的成員組成相同,成員函數(shù)的源代碼形式相同,所不同的只是所針對的類型(成員的類型以及成員函數(shù)的參數(shù)和返回值的類型)。C++中可以委類模板的參數(shù)設置默認值,所以B)選項是不正確的,其他選項的表述都是正確的。

14.D解析:本題考查的是數(shù)組的基本使用,數(shù)組還可以通過對應的指針調(diào)用傳遞參數(shù),其余選項的說法都是正確的。

15.B表達式值的類型是由操作數(shù)的類型決定的,因為本題的兩個數(shù)都是int型的,所以得出的結果也為int型,即去掉小數(shù)點后的部分,只取商的整數(shù)部分。

16.D\r\n所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊列循環(huán)使用。在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針real指向的位置之間所有的元素均為隊列中的元素。求解隊列中元素個數(shù)的方法是:若front>rear,隊列中有n-front+rear個元素(其中n為循環(huán)隊列的容量);若front<rear,隊列中有real-front個元素;若front=rear,隊列中有n個或0個元素。循環(huán)隊列是線性結構。因此本題的正確答案是D。

17.B\nB。【解析】聲明一個函數(shù)模板的格式template<模板形參表聲明>函數(shù)聲明。調(diào)用模板函數(shù)時,如果與模板實參中最后的若干個參數(shù)有關的信息可以從模板函數(shù)的實參中獲得,則相關的模板實參可以省略。

\n

18.C輸出流對象包括基本的輸出設備,如顯示器,內(nèi)存和文件,而輸入流對象則包括鍵盤,文件以及其他輸入設備。

19.B解析:棧是限定在二端進行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進后出”或“后進先出”的原則組織數(shù)據(jù)的。注意:隊列組織數(shù)據(jù)的原則是“先進先出”或“后進后出”。注意:數(shù)據(jù)結構中,棧和隊列組織數(shù)據(jù)的原則。

20.C數(shù)據(jù)結構概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結構、存儲結構(物理結構)及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結構只抽象地反映數(shù)據(jù)元素之間的邏輯關系,即數(shù)據(jù)元素之間的前后件關系,而不管它在計算機中的存儲表示形式。

21.DD?!窘馕觥勘绢}考查指針的使用。在給*P賦值前,指針P并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于P中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導致程序出錯。

22.Astreamoff定義于iostream.h中,定義有偏移量0ffset所能取得的最大值,seek—dir表示移動的基準位置,是一個有以下值的枚舉:ios::be9:(文件開頭)、ios::cur:(文件當前位置)、ios::end:(文件結尾)。

23.BB?!窘馕觥考兲摵瘮?shù)是在聲明虛函數(shù)時被“初始化”為0的虛函數(shù)。純虛函數(shù)沒有函數(shù)體,純虛函數(shù)的作用是在基類中為其派生類保留一個函數(shù)名稱。

24.軟件生命周期軟件生命周期解析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。

25.51035,10,3解析:本題考查全局變量,局部變量和類的數(shù)據(jù)成員之間的使用上的差別。使用全局變量時需要用域作用符來限定該變量,否則編譯器無法正確區(qū)分。

26.時間復雜度和空間復雜度時間復雜度和空間復雜度

27.動態(tài)動態(tài)

28.身份證號身份證號解析:主關鍵字是表中區(qū)別不同記錄的標識,在該表中只有身份證號能起到這個作用,所以用其作為主關鍵字。

29.比較兩個整數(shù)a和b的大小若a>b則返回1若a等于b則返回0否則返回-1。比較兩個整數(shù)a和b的大小,若a>b則返回1,若a等于b,則返回0,否則返回-1。

30.*str==NULL或者!*str0*str==NULL或者!*str\r\n0解析:如果結束,返回0值。

31.編譯器編譯器解析:內(nèi)聯(lián)函數(shù)是通過編譯器,只是在調(diào)用的時候,像宏一樣展開。注意:內(nèi)聯(lián)函數(shù)比普通函數(shù)的效率更高。

32.循環(huán)結構循環(huán)結構解析:C++語言3種基本結構就是順序結構,選擇結構,循環(huán)結構。

33.哈克汪汪叫吉米喵喵叫哈克汪汪叫吉米喵喵叫

34.real+c.realimag+c.imag

35.11212312341\r\n12\r\n123\r\n123436.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本題主要考查了主函數(shù)定義及冪同進制之間的轉換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main”,函數(shù)名之后必須是一對括號,因此第1處應改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據(jù)題目要求輸出的結果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,卡進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

37.(1)應改為“usingnamespacestd;”。

\n(2)應改為“outl.open('1.txt',ios::binary|ios::app);”。

\n(3)應改為“out1.put(s[i]);”。

\n【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調(diào)用成員函數(shù)open中,輸入、輸出方式是在ios類中定義的,所以“out1.open('1.txt',binary|app);”語句缺少類ios,即第2處的語句修改為“out1.open('1.txt',ios::binary|ios::app);”。第3個標識應該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

38.(1)應改為“TC::TC”。

\n(2)應改為“voidTC::display”。

\n(3)應改為“TC::~TC”。

\n【解析】在類的外部定義成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構函數(shù),析構函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。

39.(1)應改為“catch(char*s)”。(2)應改為“cateh(inti)”。

(3)應改為“catch(…)”。

【解析】本題中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。40.(1)“staticintn=O”應改為“staticintn;”。(2)“intCO::n;”應改為“intCO::n=0;”。(3)“cout<<c.n<<endl;”應改為“cout<<c->n<<endl;”?!窘馕觥勘绢}要在屏幕上輸出兩個字符,首先要靜態(tài)變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應改為“cout<<c->n<<endl;”。41.(1)應改為“TC::TC”。(2)應改為“voidTC::display”。(3)應改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運算符“::”,作用域運算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應改為“TC::TC”,默認構造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實現(xiàn)TC函數(shù),因此也有作用域運算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實現(xiàn)析構函數(shù),析構函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構造函數(shù)加以區(qū)別,因此第3處的語句應改為“TC::~TC”。

42.(1)應改為“ein.getline(str,120,?);”。

\n(2)應改為“while(str[i])”。

\n(3)應改為“if(str[i]>=a&&str[i]<=2)”。

\n【解析】本題中要求以輸入字符“?”為結束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結束符,若不是結束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。

43.(1)應改為“ein.getline(str,120,?);”。

(2)應改為“while(str[i])”。

(3)應改為“if(str[i]>=a&&str[i]<=2)”。

【解析】本題中要求以輸入字符“?”為結束符,用于字符輸入的流成員函數(shù)getline函數(shù)讀入一行字符,格式為“cin.getline(字符數(shù)組,字符個數(shù),終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結束符,若不是結束符,在循環(huán)中判斷每一個字符是否為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”。第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現(xiàn)有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。44.(1)應改為“catch(char*s)”。(2)應改為“cateh(inti)”。(3)應改為“catch(…)”?!窘馕觥勘绢}中第1個標識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論