2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)_第1頁
2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)_第2頁
2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)_第3頁
2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)_第4頁
2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2023年山東省臨沂市全國計(jì)算機(jī)等級考試C++語言程序設(shè)計(jì)測試卷(含答案)學(xué)校:________班級:________姓名:________考號:________

一、1.選擇題(10題)1.關(guān)于continue語句敘述不正確的是()。

A.continue語句用于循環(huán)體中,結(jié)束循環(huán)

B.continue語句用于循環(huán)體中,它使執(zhí)行流跳出循環(huán)體中尚未執(zhí)行的語句,并進(jìn)行下一循環(huán)判斷

C.continue可以用于if語句中

D.continue語句不能代替break語句

2.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項(xiàng)D.數(shù)據(jù)結(jié)構(gòu)

3.在長度為n的有序線性表中進(jìn)行二分查找,需要的比較次數(shù)為()。A.log2nB.nlog2nC.n/2D.(n+1)/2

4.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)和()放在一起,作為一個相互依存、不可分割的整體來處理。

A.對數(shù)據(jù)的操作B.信息C.數(shù)據(jù)隱藏D.數(shù)據(jù)抽象

5.設(shè)有n元關(guān)系R及m元關(guān)系S,它們分別有p、q個元組,則關(guān)系R與S經(jīng)笛卡爾積記為R×S,該關(guān)系是一個n+m元關(guān)系,那么其元組個數(shù)是()。

A.n*mB.n+mC.p+qD.p*q

6.在C++語言中,main函數(shù)默認(rèn)返回一個()類型的值。

A.intB.floatC.charD.void

7.下選項(xiàng)中不屬于c++的類型的是______。

A.signedShortint

B.unsignedlongint

C.unsignedint

D.longshort

8.類的析構(gòu)函數(shù)是在什么時候調(diào)用的?

A.類創(chuàng)建時B.創(chuàng)建對象時C.刪除對象時D.不自動調(diào)用

9.設(shè)x為int的變量,不能正確表達(dá)數(shù)學(xué)關(guān)系10<x<15的表達(dá)式是______。

A.10<x<15

B.x==1||x==12||x==13||x==14

C.x>10&&x<15

D.!(x<=10)&&!(x>=15)

10.在派生類中,重載一個虛函數(shù)時,要求函數(shù)名、參數(shù)的個數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值()。

A.完全相同B.完全不同C.部分相同D.以上都不對

二、單選題(13題)11.類MyClass的定義如下:

classMvClass

{

public:

MyClass(){value=0;}

SetVariable(inti){value=i;}

private:

intvalue;

};

則對下列語句序列正確的描述是()。

A.語句p=&my;是把對象my賦值給指針變量P

B.語句MyClass*P,my;會調(diào)用兩次類MyClass的構(gòu)造函數(shù)

C.對語句*P.SetVariable(5)的調(diào)用是正確的

D.語句p->SetVariable(5)與語句my.SetVariable(5)等價

12.在深度為5的滿二叉樹中,葉子節(jié)點(diǎn)的個數(shù)為A.A.32B.31C.16D.15

13.

14.若有定義語句“inti=2,j=3;”,則表達(dá)式i/j的結(jié)果是()。

A.0B.0.7C.0.66667D.0.66666667

15.第21題

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

B.結(jié)構(gòu)體的成員對外界通常是開放的;類的成員可以被隱蔽

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

D.結(jié)構(gòu)體成員默認(rèn)為public;類成員默認(rèn)為private

16.軟件詳細(xì)設(shè)計(jì)產(chǎn)生的如下圖所示。該圖是()。

A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

17.繼承機(jī)制的作用是()。

A.信息隱藏B.數(shù)據(jù)封裝C.定義新類D.數(shù)據(jù)抽象

18.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確韻是()。

A.冒泡排序?yàn)閚/2B.冒泡排序?yàn)閚C.快速排序?yàn)閚D.快速排序?yàn)閚(n-1)/2

19.有如下類定義:

classXX{

intXX;

public:

xx():xx(0){tout<<A;}

XX(intn):xx(n){cout<<B;}

};

classY:Y:publicXX{

intYY;

public:

YY():YV(O){cout<<YY;)

YY(intn):xx(n+1),YY(n){cout<<YY;}

YY(intm,intn):XX(m),YY(n){cout<<yy;)

};

下列選項(xiàng)中,輸出結(jié)果為A0的語句是A.YYyl(0,0);B.YY72(1);C.YYy3(0);D.YYy4;

20.若有定義語句“intm[]={5,4,3,2,1),i=4;”則下列對m數(shù)組元素的引用中錯誤的是()。

A.m[--i]B.m[2*2]C.m[m[o]]D.m[m[i]]

21.

22.有定義語句“chars[10];”,若要從終端給S輸入5個字符,錯誤的輸入語句是()。

A.A.gets(&s0);

B.B.scanf("%s",s+1);

C.C.gets(s);

D.D.scanf("%s",s[1]);

23.設(shè)有兩個串p和q,求q在p中首次出現(xiàn)位置的運(yùn)算稱為()。

A.連接B.模式匹配C.求子串D.求串長

三、2.填空題(12題)24.在計(jì)算機(jī)軟件系統(tǒng)的體系結(jié)構(gòu)中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】之間。

25.寫出下列程序的運(yùn)行結(jié)果【】。

#include<iostream.h>

voidfunc(doublex,int&part1,double&part2){

part1=int(x)+500:

part2=(x+500-part1)*100;

}

voidmain(){

intn;

doublex,f;

x=1001.0103;

func(x,n,f):

cout<<"Part1="<<n<<",part2="<<f<<end1

}

26.下列程序的輸出結(jié)果為:

Objectid=0

Objectid=1

請將程序補(bǔ)充完整。

#include<iostream>

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}

~Point(){countP--;}

intGetX(){returnX;}

intGetY(){returnY;}

staticvoidGetC(){cout<<"0bjectid="<<countP<<end1;}

private:

intX,Y;

staticintcountP;

};

______//靜態(tài)數(shù)據(jù)成員的初始化

intmain()

{

Point::GetC();

PointA(4,5);

A.GetC();

return0;

}

27.多態(tài)性分為兩類:編譯時的多態(tài)性和【】。

28.求1~100的和,可寫成for(s=0,i=1;【】;i++)s+=i;的形式。

29.有如下程序:

#include<iostream>

usingnamespacestd;

classCA{

public:

CA(){cout+'A';}

};

classCB:privateCA{

public:

CB(){cout<<'B';}

};

intmain(){

CAa;

CBb;

return0;

}

這個程序的輸出結(jié)果是______。

30.程序文件的編譯錯誤分為語法錯誤和【】兩類。

31.在類的對象被創(chuàng)建時,______函數(shù)會被自動調(diào)用。

32.為解決在多重繼承環(huán)境中因公共基類帶來的______問題,C++語言提供了虛基類機(jī)制。

33.如果使用數(shù)組名稱為函數(shù)參數(shù),形實(shí)結(jié)合時,傳遞的是______。

34.在C++語言的面向?qū)ο蟪绦蛟O(shè)計(jì)框架中,【】是程序的基本組成單元。

35.下列程序?qū)、y和z按從小到大的順序排列,請將下面的函數(shù)模板補(bǔ)充完整。

template<classT>

voidorder()

{

Tal

if(x>y)

{

a=x;x=y(tǒng);y=a;

}

if(y>z)

{

a=y(tǒng);y=Z;z=a;

}

if(x>y)

{

a=X;X=y;y=a;

}

}

四、程序改錯題(10題)36.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;}37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使程序正常運(yùn)行,并且要求最后一個catch必須拋出執(zhí)行的任何異常。

程序異常,輸出信息為

error

O

ERROR

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;

}

38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行有問題,請改正main函數(shù)中的錯誤,使程序的輸出結(jié)果為:

number=1

number=10

number=100

注意:不要改動main函數(shù),不能增加或刪除行。也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;

}

39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤,使得程序輸出:

9,8,7,6,5

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

試題程序:

#include(iostream.h>

classTC

{

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

TC(inti)

{

m_i=i;

}

voidprint

{

cout<<--m_i<<,;

}

public:

intm_i;

};

intmain

{

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

inti;

TC04(10);

while(i>5)

{

/********errOr********/

i++:

04.print;

}

cout<<endl;

return0;

}

40.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,輸出的結(jié)果為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;}

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

注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;

}

42.使用VC++6.0打開考生文件夾下的源程序文件1.cpp。本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當(dāng)輸入字符“?”時,默認(rèn)字符輸入結(jié)束,最后把結(jié)果輸出到屏幕中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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,該程序運(yùn)行時有錯,請改正其中的錯誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

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

(1)不能刪除assert()語句。

(2)只能修改后面的數(shù)字。

提示:assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。

試題程序:

#include<iostream.h>

#include<assert.h>

voidmain()

{

char*s1="abc":

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

assert(sizeof(s1)==3):

cout<<"sizeof(s1)=5"<<endl;

chars2[10]="ab":

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

assert(sizeof(s2)==2);

cout<<"sizeof(s2)=10"<<endl;

chars3=23:

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

assert(sizeof(s3)==4);

cout<<"sizeof(s3)=1"<<endl;

return;

}

44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤。本程序要求實(shí)現(xiàn)的功能為從鍵盤輸入一個字符串,并將結(jié)果保存到文件1.txt中。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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;}

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

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;

}

五、綜合應(yīng)用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cpp。類People包括姓名和年齡兩個字段。函數(shù)fun獲得年齡比較大的人的姓名,然后輸出這個姓名到屏幕。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。(1)完成類的構(gòu)造函數(shù)功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù)對姓名的賦值,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(3)定義類的友元函數(shù)fun,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。(4)補(bǔ)充函數(shù)fun的年齡比較功能,請?jiān)谧⑨?后添加適當(dāng)?shù)恼Z句。注意:增加或者修改代碼的位置已經(jīng)用符號表示出來,請不要修改其他的程序代碼。試題程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}

47.(1)應(yīng)添加“virtualvoidGetNamt!=0;”。

(2)應(yīng)添加“constchar*GetName2”。

(3)應(yīng)添加“TC2(char*str)”。

(4)應(yīng)添加“m_str[i]=0;”。

【解析】本題第1處要求“在類TC1中定義接口函數(shù)GetName,為純虛函數(shù)”。在C++中,在基類中用virtual聲明成員函數(shù)為虛函數(shù)。純虛函數(shù)是在聲明虛函數(shù)時被“初始化”為0的函數(shù),即“virtualvoidGetName=0;”。第2處要求“函數(shù)GetName2實(shí)現(xiàn)獲得名字的緩存,但只獲得讀允許操作這個緩存”。只能引用數(shù)據(jù)成員,而不能修改,所以使用常成員函數(shù),其一般形式為“const函數(shù)類型函數(shù)名”,即“constchar*GetName2”。第3處要求“實(shí)現(xiàn)TC2的構(gòu)造函數(shù)”。TC2的構(gòu)造函數(shù)與類TC2的名稱應(yīng)該相同,而且第3處的大括弧中是對字符數(shù)組str的操作,所以類TC2的構(gòu)造函數(shù)中的參數(shù)為str,即這里補(bǔ)全為“TC2(char*str)”。第4處要求“完成TC2的構(gòu)造函數(shù),實(shí)現(xiàn)對名字的處理”,補(bǔ)全類TC2的構(gòu)造函數(shù),構(gòu)造函數(shù)中的名字變量str對應(yīng)于類TC中的成員變量m_str,所以這里補(bǔ)全變量賦值操作“m_str[i]=0;”。

六、3.綜合應(yīng)用題(2題)48.使用VC6打開考生文件夾下的工程tsst6_3,此工程包含一個源程序文件test6_3.cpp,其中定義了用于表示考生的類Student,請按要求完成下列操作,將程序補(bǔ)充完整。

(1)定義私有數(shù)據(jù)成員code、english分別用于表示考生的編號、英語成績、它們都是int型的數(shù)據(jù)。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

(2)完成成員函數(shù)voidStudent::inputinformation()的定義,該函數(shù)用于用戶輸入一個考生對象的信息,輸入格式如下:

輸入編號:

英語成績;

計(jì)算機(jī)成績:

請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

(3)利用己實(shí)現(xiàn)的類Student的成員函數(shù),完成函數(shù)voidfirstname(Student*A[],intnum)的定義,該函數(shù)根據(jù)考生信息A[],輸出num個考生中總分最高者的編號及其相應(yīng)的總分,在此不考慮總分相同的情況。請?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z句。

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

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

#include<iostream.h>

classStudent

{

//**1**

intcomputer;

inttotal;

public:

voidgetinformation();

voidcomputesum();

intgetcode();

intgettotalscore();

~Student();

};

voidStudent::getinformation()

{

//**2**

cout<<"英語成績:";

cin>>english;

cout<<"計(jì)算機(jī)成績:";

cin>>computer;

}

voidStudent::computesum()

{

total=english+computer;

cout<<"編號"<<code<<"總分:"<<total<<endl;

}

intstudent::getcode()

{

returncode;

}

intStudent::gettotalscore()

{

returntotal;

}

voidfirstname(Student*A[],intnum)

{

//**3**

tempsum=(*A[0]).gettotalscore();

for(inti=1;i<num;i++)

{

if(((*A[i]).gettotalscore())>tempsum)

{

tempcode=(*A[i]).getcode();

telnpsum=(*A[i]).gettotalscore();

}

}

cont<<"總分最高者--"<<tempcode<<":"<<tempsum<<endl;

}

voidmain()

{

Student*A[3];

inti,n=3;

for(i=0;i<n;i++)

{

A[i]=newStudent;

A[i]->getinformation();

}

for(i=0;i<n;i++)

{

A[i]->computesum();

}

firstname(A,3);

}

49.使用VC6打開考生文件夾下的工程MyProj12。此工程包含一個源程序文件MyMain12.cpp。程序中定義了兩個類Base和Derived,但類的定義并不完整。

請按要求完成下列操作,將類的定義補(bǔ)充完成:

①類Derived是基類Base公有派生來的。請?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z句。

②完成構(gòu)造函數(shù)Derived(intx)定義,采用初始化列表的方式使基類Base私有成員a初始化為x,類Derived的私有成員b初始化為x+1。請?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z句。

③完成類Derived的成員函數(shù)show()的類體外的定義。函數(shù)show()中要輸出基類數(shù)據(jù)成員a的值,然后要輸出私有成員b的值。請?jiān)谧⑨尅?/**3**之后添加適當(dāng)?shù)恼Z句。

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

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

//MyMain12.cpp

#include<iostream>

usingnamespacestd;

classBase

{

public:

inta;

Base(inti)

{

a=i;

}

};

//***1***

{

private:

intb;

public:

//***2***

voidshow();

};

voidDerived::show()

{

//***3***

}

intmain()

{

Derivedd(1);

d.show();

return0;

}

參考答案

1.A解析:continue是跳出了本次循環(huán)中尚未執(zhí)行的語句,重新執(zhí)行循環(huán),但沒有終止循環(huán)。注意:注意break,continue和goto語句的用法和區(qū)別。

2.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項(xiàng)C)。

3.A解析:在長度為n的有序線性表中進(jìn)行二分查找,在最壞情況下,需要的比較次數(shù)為log2n。

4.A解析:面向?qū)ο笳Z言包含3個要素,即對象、類和繼承。這3個要素反映了面向?qū)ο蟮膫鹘y(tǒng)觀念。面向?qū)ο蟪绦蛟O(shè)計(jì)的本質(zhì)是把數(shù)據(jù)和對數(shù)據(jù)的操作當(dāng)成一個整體即對象。

5.D解析:本題考核對笛卡兒積運(yùn)算的掌握。笛卡兒積是兩個關(guān)系的合并操作,p元組關(guān)系R與q元組關(guān)系S經(jīng)笛卡兒積后所得新關(guān)系的元組個數(shù)為p*q。

6.A

7.D

8.C解析:析構(gòu)函數(shù)可以被函數(shù)調(diào)用,也可以系統(tǒng)調(diào)用:函數(shù)體內(nèi)的對象在函數(shù)結(jié)束時調(diào)用析構(gòu)函數(shù)和使用delete釋放對象所占有用的資源。

9.A

10.A解析:在派生類中,重載一個虛函數(shù)時,要求函數(shù)名、參數(shù)的個數(shù)、參數(shù)的類型、參數(shù)的順序和函數(shù)的返回值相同。

11.D\nD?!窘馕觥窟x項(xiàng)A,語句P=&rny;是把對象my的地址值賦值給指針變量P;選項(xiàng)B,語句MyClass*P,my;中由于P只是一個指向?qū)ο蟮闹羔槪虼硕x指針P不調(diào)用構(gòu)造函數(shù),所以此語句只調(diào)用一次構(gòu)造函數(shù):對成員函數(shù)的引用可以通過兩種形式:指針一>成員函數(shù)(形參表),或者對象名.成語函數(shù)名(形參表),故選項(xiàng)C錯誤,選項(xiàng)D正確。

\n

12.C解析:滿二叉樹是指除最后一層外,每一層上的所有節(jié)點(diǎn)都有兩個葉子節(jié)點(diǎn)。在滿二叉樹中,層上的節(jié)點(diǎn)數(shù)都達(dá)到最大值,即在滿二叉樹的第A層上有2k-1個節(jié)點(diǎn),且深度為m的滿二叉樹有2m-1個節(jié)點(diǎn)。

13.C

14.AA?!窘馕觥空麛?shù)相除為整數(shù),所以結(jié)果為0。

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

16.CC?!窘馕觥縉—S圖是由若干基本框圖構(gòu)成的流程圖,其特點(diǎn)是沒有流程線;PAD圖即問題分析圖(ProblemAnalysisDiagram),它是一種由左往右展開的二維樹型結(jié)構(gòu);程序流程圖用于描述問題解決的過程和步驟,其中方框表示處理步驟、菱形框表示邏輯判斷、箭頭表示控制流向;E—R圖即實(shí)體一聯(lián)系圖(EntityRelationshipDiagram),用來描述現(xiàn)實(shí)世界的概念模型,構(gòu)成元素有實(shí)體、屬性和聯(lián)系,分別用矩形、橢圓形和菱形表示。本題答案為C。

17.C

18.D

19.D解析:建立派生類對象時,構(gòu)值函數(shù)的執(zhí)行順序?yàn)椋簣?zhí)行基類的構(gòu)造函數(shù)一執(zhí)行成員對象的構(gòu)造函數(shù)一執(zhí)行派生類的構(gòu)造函數(shù)。D)選項(xiàng)定義對象y4時沒有傳人任何值,則先調(diào)用基類的構(gòu)造函數(shù).XX(),輸出‘A。,然后調(diào)用派生類的構(gòu)造函數(shù)YY(),輸出yy=0,最終輸出為A0。故本題答案為D)。

20.CC?!窘馕觥繑?shù)組的下標(biāo)是從零開始的。一維數(shù)組的一般定義方式為數(shù)型說明符數(shù)組名[常置表達(dá)式],其中“[]”中的內(nèi)容可以是整型數(shù)量,也可以是整型表達(dá)式。選項(xiàng)C中,m[0]=5,m[m[o]]=m[5],數(shù)組下標(biāo)越界。

21.D

22.DD?!窘馕觥窟x項(xiàng)A調(diào)用函數(shù)gets使得s數(shù)組從s[0]開始得到輸入的字符;選項(xiàng)B使得數(shù)組從元素s[1]開始得到輸入的5個字符;選項(xiàng)C使得數(shù)組從s[0]開始得到輸入的字符;而選項(xiàng)D的scan[(”%S”,S[1])調(diào)用錯誤,應(yīng)為scanf(”%s”,&s[1])輸入項(xiàng)部分應(yīng)該是一個地址值。

23.B解析:字串的定位操作通常稱為串的模式匹配,是各種串處理系統(tǒng)中最重要的操作之一。

24.操作系統(tǒng)或OS操作系統(tǒng)或OS

25.part1=1501part2=1.03

26.intPoint::countP=0;

27.運(yùn)行時的多態(tài)性運(yùn)行時的多態(tài)性

28.i<=100i<=100解析:本題循環(huán)執(zhí)行100次,每次循環(huán)執(zhí)行s=s+i,因?yàn)槭乔?~100的和,所以需要循環(huán)變量滿足的條件是i<=100。

29.AABAAB解析:此題考查的是派生類的構(gòu)造函數(shù)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右),接著執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序->執(zhí)行派生類的構(gòu)造函數(shù)。題目中首先定義了類CA的對象a,輸出'A';然后定義CB類的對象b,因?yàn)镃B類派生自CA類,所以會先執(zhí)行CA類的構(gòu)造函數(shù),再執(zhí)行CB類的構(gòu)造函數(shù),即輸出'A'和'B'。

30.連接錯誤連接錯誤

31.構(gòu)造構(gòu)造解析:此題考查的是構(gòu)造函數(shù)的應(yīng)用。構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時利用特定的值構(gòu)造對象,構(gòu)造函數(shù)在對象被創(chuàng)建時由系統(tǒng)自動調(diào)用。

32.二義性二義性

33.地址地址解析:此題考查的是函數(shù)參數(shù)的傳遞方式。函數(shù)參數(shù)的傳遞方式分為傳值和傳地址兩種。使用數(shù)組名作為函數(shù)參數(shù),因?yàn)閿?shù)組名代表的是數(shù)組的首地址,所以傳遞的是地址。

34.類類解析:C++語言面向?qū)ο蟪绦蛟O(shè)計(jì)的基本組成單元是class,面向過程的程序設(shè)計(jì)的基本組成單元是函數(shù)。

35.T&xT&yT&z。T&x,T&y,T&z。解析:本題要填入的是函數(shù)的形參表,此函數(shù)的功能是:x、y和z按從小到大的順序排列,那么就涉及到改變傳入的實(shí)參值的情況,因此要采用引用傳遞的方式。所以本惠空白處應(yīng)填入,T&x,T&y,T&z。36.(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)該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。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)識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。

38.(1)應(yīng)改為“TCobjl(1);”。

\n(2)應(yīng)改為“0bj1.SetNumber(10);”。

\n(3)應(yīng)改為“0bj2.SelNumber(100);”。

\n【解析】本題第1處的“TCobjl;”語句是聲明TC類的對象0bj1,根據(jù)TC類構(gòu)造函數(shù)的定義TC(inti),存在整型參數(shù),并且題目要求第一個輸出結(jié)果兩1,所以補(bǔ)全參數(shù)1,即第1處的“TCobjl(1);”。第2處處的“objl.number=10;”應(yīng)該是調(diào)用成員函數(shù)SetNumber賦值。在C++中成員函數(shù)的使用形式應(yīng)該是:對象名.成員函數(shù),所以修改為“obj1.SetNumber(10);”。類是對象的抽象,而對象是類的具體實(shí)例。第3處“TC.SetNumber(100);”語句中的TC為類,并不是對象,這里應(yīng)該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(100);”。

39.(1)應(yīng)添加“public:”。

\n(2)“inti”應(yīng)改為“inti(10);”。

\n(3)“i++;”應(yīng)改為“i--;”。

\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護(hù)和私有3種,而默認(rèn)的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應(yīng)在構(gòu)造函數(shù)前添加“public:”,否則該類無法被實(shí)例化。變量的初始化可以通過“=”號,也可以和初始化對象一樣添加構(gòu)造參數(shù),題目已要求使用后者。本題要求輸出5個數(shù),while的循環(huán)變量i每次減1,在i>5時循環(huán),故i初始化應(yīng)為10。若循環(huán)中i每次增1,則循環(huán)永遠(yuǎn)不會退出。40.(1)應(yīng)改為“TC::TC”。(2)應(yīng)改為“voidTC::display”。(3)應(yīng)改為“TC::~TC”?!窘馕觥吭陬惖耐獠慷x成員函數(shù)時,必須在成員函數(shù)前面加上類名和作用域運(yùn)算符“::”,作用域運(yùn)算符用采表示某個成員屬于哪個類,使用格式為“(類名)::<成員函數(shù)>((參數(shù)函數(shù))),因此第1處應(yīng)改為“TC::TC”,默認(rèn)構(gòu)造函數(shù)沒有參數(shù)。由第2處“TC::display”后的語句看,這是在類外實(shí)現(xiàn)TC函數(shù),因此也有作用域運(yùn)算符使用錯誤問題,display函數(shù)返回值為void,因此第2處的語句應(yīng)改為“voidTC::display”。由第3處的語句“TC::TC”可知,顯然這里是在類外實(shí)現(xiàn)析構(gòu)函數(shù),析構(gòu)函數(shù)是一個特殊的函數(shù),它的名稱和類名相同,并在前面加“~”字符,用采與構(gòu)造函數(shù)加以區(qū)別,因此第3處的語句應(yīng)改為“TC::~TC”。

41.(1)應(yīng)改為“ein.getline(str,120,?);”。

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

\n(3)應(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中的每一個字符是否為結(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)”。

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

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

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

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

43.(1)應(yīng)改為“assert(sizeof(s1)==4);”。

\n(2)應(yīng)改為“assert(sizeof(s2)==1O);”。

\n(3)應(yīng)改為“assert(sizeof(s3)==1);”。

\n【解析】assert函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會產(chǎn)生中斷異常?!癮ssert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個尾符,它的長度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。

44.(1)應(yīng)改為“usingnamespacestd;”。(2)應(yīng)改為“outl.open("1.txt",ios::binary|ios::app);”。(3)應(yīng)改為“out1.put(s[i]);”?!窘馕觥勘绢}第1處的“usingstd;”是在程序中引入標(biāo)準(zhǔn)命名空間std,對于C++中引入標(biāo)準(zhǔn)命名空間的格式,缺少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個標(biāo)識應(yīng)該用流成員函數(shù)put輸出字符,所以第3處的語句修改為“out1.put(s[i]);”。

45.(1)應(yīng)改為“TC::TC”。

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

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

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

溫馨提示

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

評論

0/150

提交評論