c期末考試試卷_第1頁
c期末考試試卷_第2頁
c期末考試試卷_第3頁
c期末考試試卷_第4頁
c期末考試試卷_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1.在C++中,函數(shù)原型不能標(biāo)識()

A.函數(shù)的返回類型B.函數(shù)參數(shù)的個(gè)數(shù)

C.函數(shù)參數(shù)類型D.函數(shù)的功能

2.在C++程序中,對象之間的相互通信通過()

A.繼承實(shí)現(xiàn)B.調(diào)用成員函數(shù)實(shí)現(xiàn)

C.封裝實(shí)現(xiàn)D.函數(shù)重載實(shí)現(xiàn)

3.對于任意一個(gè)類,析構(gòu)函數(shù)的個(gè)數(shù)最多為()

A.OB.lC.2D.3

4.下面函數(shù)模板定義中不正確的是()

A.template<classQ>

B.template<classQ>

QF(Qx){QF(Qx){

returnQ+x;returnx+x;

}}

C.template<classT>

D.template<classT>

TF(Tx){TF(Tx){

returnx*x;returnx>l;

}}

5.友元關(guān)系不能()

A.繼承

B.是類與類的關(guān)系

C.是一個(gè)類的成員函數(shù)與另一個(gè)類的關(guān)系

D.提高程序的運(yùn)行效率

6.語句ofstreamf("SALARY.DAT",ios::appIios::binary);的功能是建立流對象f,

試圖打開文件SALARY.DAT并與之連接,并月.()

A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個(gè)新文件

B.若文件存在,將其置為空文件;若文件不存在,打開失敗

C.若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個(gè)新文件

D.若文件存在,打開失?。蝗粑募淮嬖?,建立一個(gè)新文件

7.下面說法正確的是()

A.內(nèi)聯(lián)函數(shù)在運(yùn)行時(shí)是將該函數(shù)的目標(biāo)代碼插入每個(gè)調(diào)用該函數(shù)的地方

B.內(nèi)聯(lián)函數(shù)在編譯時(shí)是將該函數(shù)的目標(biāo)代碼插入每個(gè)調(diào)用該函數(shù)的地方

C.類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義

D.類的內(nèi)聯(lián)函數(shù)必須在類體外通過加關(guān)鍵字inline定義

8.可以用p.a的形式訪問派生類對象p的基類成員a,其中a是()

A.私有繼承的公有成員B.公有繼承的私有成員

C.公有繼承的保護(hù)成員D.公有繼承的公有成員

9.在公有派生情況下,有關(guān)派生類對象和基類對象的關(guān)系,不正確的敘述是()

A.派生類的對象可以賦給基類的對象

B.派生類的對象可以初始化基類的引用

C.派生類的對象可以直接訪問基類中的成員

D.派生類的對象的地址可以賦給指向基類的指針

10.對于類定義

classA{

public:virtualvoidfuncl(){}

voidfunc2(){}

);

classB:publicA{

publicrvoidfuncl(){cout?z,classBfunc1"?end1;}

virtualvoidfunc2(){cout?"classBfunc2"?end1;}

);

下面正確的敘述是()

A.A::func2()和B::funcl()都是虛函數(shù)

B.A::func2(^1B::funcl()都不是虛函數(shù)

C.B::funcl()是虛函數(shù),而A::func2()不是虛函數(shù)

D.B::funcl()不是虛函數(shù),而A::func2()是虛函數(shù)

11.定義類的動(dòng)態(tài)對象數(shù)組時(shí),系統(tǒng)只能夠自動(dòng)調(diào)用該類的構(gòu)造函數(shù)對其

進(jìn)行初始化。

12.在C++程序設(shè)計(jì)中,建立繼承關(guān)系倒掛的樹應(yīng)使用繼承。

13.表達(dá)式coutcvendl還HT表示為。

14.基類的公有成員在派生類中的訪問權(quán)限由決定。

15.C++支持的兩種多態(tài)性分別是多態(tài)性和多態(tài)性。

16.C++中語句constchar*constp="hello";所定義的指針p和它所指的內(nèi)容都不

能被O

17.假定AB為一個(gè)類,則語句AB(AB&x);為該類構(gòu)造函數(shù)的原型說明。

18.將關(guān)鍵字const寫在成員函數(shù)的和之間時(shí),所修飾的是this

指針。

19.在C++中,訪問一個(gè)對象的成員所用的運(yùn)算符是,訪問一個(gè)指針?biāo)?/p>

向的對象的成員所用的運(yùn)算符是o

20.派生類從一個(gè)或多個(gè)以前定義的該類的一

模擬題一參考答案

一、單項(xiàng)選擇題(本大題共10小題,每小題2分,共20分)

l.D2.B3.B4.A5.A

6.A7.B8.D9.C10.C

第二部分非選擇題(共80分)

二、填空題(本大題共10小題,每小題2分,共20分)

11.無參

12.單一(或單)

13.cout?,\n'(或cout?'\12',或cout?'\xA',或其它等價(jià)形式)

14.訪問控制(或其它等價(jià)形式)

15.編譯時(shí)的(或靜態(tài),或操作重載)

運(yùn)行時(shí)的(或動(dòng)態(tài),或虛函數(shù))

16.改變(或重新賦值)

17.復(fù)制初始化(或拷貝)

18.函數(shù)頭(或參數(shù)表)函數(shù)體

19.成員選擇運(yùn)算符(或)成員訪問運(yùn)算符(或)

20.基類

模擬題二

一、單項(xiàng)選擇題(每題2分,共20分)

1.派生類對象可訪問基類中的什么成員()

A.公有繼承的公有成員B.公有繼承的私有成員

C.公有繼承的保護(hù)成員D.私有繼承的公有成員

2.定義析構(gòu)函數(shù)時(shí),應(yīng)該注意()o

A.其名與類名完全相同B.返回類型是void類型

C.無形參,也不可重載D.函數(shù)體中必須有delete語句

3.如果類A被說明成類B的友元,貝lj()o

A.類A的成員即類B的成員B.類B的成員即類A的成員

C.類A的成員函數(shù)不得訪問類B的成員D.類B不一定是類A的友元

4.應(yīng)在下列程序劃線處填入的正確語句是()

#include

classBase

{public:

voidfun(){cout〈〈“Base::fun“〈〈endl;}

);

classDerived:publicBase

{voidfun()

{//顯示調(diào)用基類的函數(shù)fun()

cout<X"Derived::fun”〈〈ENDL;

)

);

A.fun();B.Base.fun();

C.Base::fun():D.Base->fun();

5.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)與()放在一起,做為一個(gè)相互依存、不可

分割的整體來處理。

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

6.在類中聲明轉(zhuǎn)換函數(shù)時(shí)不能指定()。

A.參數(shù)B.訪問權(quán)限C.操作D.標(biāo)識符

7.在派生類中重新定義虛函數(shù)時(shí)必須在()方面與基類保持一致。

8.下面關(guān)于C++中A.參數(shù)類型B.參數(shù)名字C.操作內(nèi)容D.賦值

類的繼承與派生的

說法錯(cuò)誤的是()。

A.基類的protected成員在公有派生類的成員函數(shù)中可以直接使用

B.基類的protected成員在私有派生類的成員函數(shù)中可以直接使用

C.公有派生時(shí),基類的所有成員訪問權(quán)限在派生類中保持不變

D.基類的protected成員在保護(hù)派生類的成員函數(shù)中可以直接使用

9.重載賦值操作符時(shí),應(yīng)聲明為()函數(shù)。

A.友元B.虛C.成員D.多態(tài)

10.語句ofstreamf("SALARY.DAT7,ios::appIios::binary);的功能是建

立流對象f,試圖打開文件SALARY.DAT并與之連接,并且()

A.若文件存在,將文件寫指針定位于文件尾;若文件不存在,建立一個(gè)新文

B.若文件存在,將其置為空文件;若文件不存在,打開失敗

C.若文件存在,將文件寫指針定位于文件首;若文件不存在,建立一個(gè)新文

D.若文件存在,打開失敗;若文件不存在,建立一個(gè)新文件

二、填空題(每空2分,共30分)

1.假定AB為一個(gè)類,則語句AB(AB&x);為該類構(gòu)造函數(shù)的原型

說明。

2.C++支持的兩種多態(tài)性分別是多態(tài)性和多態(tài)性。

3.定義類的動(dòng)態(tài)對象數(shù)組時(shí)?,系統(tǒng)只能夠自動(dòng)調(diào)用該類的構(gòu)造函數(shù)

對其進(jìn)行初始化。

4.運(yùn)算符重載時(shí),其函數(shù)名由構(gòu)成。成員函數(shù)重載雙目運(yùn)算符

時(shí),左操作數(shù)是,右操作數(shù)是o

5.C++標(biāo)準(zhǔn)庫中的異常層次的根類為類;MFC類庫中絕大多數(shù)類

都源自根類類。

6.在下面橫線處填上適當(dāng)字句,完成類中成員函數(shù)的定義。

classA{

int*a;

public:

A(intaa=O){

a=://用aa初始化a所指向的動(dòng)態(tài)對象

?A(){;}//釋放動(dòng)態(tài)存儲(chǔ)空間

);

7.C++支持面向?qū)ο蟪绦蛟O(shè)計(jì)的四個(gè)要素是:封裝性、繼承性、

和O

8.模板分為模板和模板。

模擬題二參考答案

一、單項(xiàng)選擇題(每題2分,共20分)

1.A2.C3.D4.C5.A6.A7.A8.C9.C

10.A

二、填空題(每空2分,共30分)

1.拷貝或復(fù)制

2.運(yùn)行(時(shí))編譯(時(shí))(二者位置可互換)(或改為靜態(tài)和動(dòng)態(tài)也可)

3.無參(缺省或默認(rèn)均可)

4.operator運(yùn)算符(運(yùn)算符可寫為@,若沒寫扣1分)(當(dāng)前)對象函

數(shù)的形參(參數(shù))

5.exception(若e寫為大寫字母則扣0.5分,單詞稍微寫錯(cuò)扣0.5分)

CObject(字母CO為大寫字母,寫為小寫各扣0.5分)

6.newint(aa)deletea(有new、delete各給1分,int給0.5分)

7.抽象性多態(tài)性(二者位置可互換)

8.類函數(shù)(二者位置可互換)

模擬題三

一、單項(xiàng)選擇題(每題2分,共20分)

1.在下面選項(xiàng)中,對類的拷貝構(gòu)造函數(shù)的聲明形式是()

A.A::A(&)B.A::A(constA&)C.A::A(A)D.voidA::A(A&a)

2.下面關(guān)于成員函數(shù)特征的描述中,錯(cuò)誤的是()

A.成員函數(shù)不可以設(shè)置參數(shù)的默認(rèn)值B.成員函數(shù)可以重載

C.成員函數(shù)可以是內(nèi)聯(lián)函數(shù)D.成員函數(shù)可以是靜態(tài)的

3.下面關(guān)于類模板敘述不正確的是()

A.可以有多個(gè)構(gòu)造函數(shù)B.類模板是模板類的實(shí)例

C.一個(gè)類模板可以用來實(shí)例化多個(gè)模板類D.類模板可以有多個(gè)參數(shù)

4.要使一個(gè)類成為抽象類,這個(gè)類應(yīng)具有的條件是()

A.至少有一個(gè)純虛函數(shù)B.至少有一個(gè)虛函數(shù)

C.只含有一個(gè)純虛函數(shù)D.只含有一個(gè)虛函數(shù)

5.有關(guān)運(yùn)算符重載正確的描述是()

A.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的操作個(gè)數(shù)

B.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的優(yōu)先級

C.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的結(jié)合性

D.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的原來的功能

6.下列說法正確的是()。

A.一個(gè)類的對象可以是另一個(gè)類的成員

B.一個(gè)類可以作為另一個(gè)類的派生類

C.一個(gè)類可以在另一個(gè)類定義體進(jìn)行定義

D.以上說法均正確

7.有如下程序:

ttinclude<iostream.h>

classBASE{

charc;

public:

BASE(charn):c(n){}

virtuaPBASEO{cout<<c;}

);

classDERIVED:publicBASE

(

charc;

public:

DERIVED(charn):BASE(n+l),c(n){}

"DERIVED(){cout?c;}

);

intmainO

(

DERIVEDCXJ);

return0;

)

執(zhí)行上面的程序?qū)⑤敵?)o

8-類MyClass的定義A)XB)YXC)XYD)Y

如下:

classMyClass

{public:

MyClass(){value=0;}

SetValue(inti){value=i;}

private:

intvalue;

);

則對語句:MyClass*p,my;p=&my;正確的描述是()□

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

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

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

D.語句p->SetValue(5)與my.SetValue(5)等價(jià)

9.下列各類函數(shù)中,不是類的成員函數(shù)。

A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.拷貝構(gòu)造函數(shù)

10.派生類的對象對它的基類成員中是可以訪問的。

A.公有繼承的公有成員B.公有繼承的私有成員

C.公有繼承的保護(hù)成員D.私有繼承的公有成員

二、填空題(每空2分,共30分)

1.定義內(nèi)聯(lián)函數(shù)所用的關(guān)鍵字,定義友元所用的關(guān)鍵字

為O

2.當(dāng)一個(gè)派生類具有多個(gè)基類時(shí),這種繼承方式稱為o

3.通過一個(gè)構(gòu)造函數(shù)調(diào)用虛函數(shù)時(shí),C++系統(tǒng)對該調(diào)用采用聯(lián)編。

4.任何類中允許有、、三種訪問控制類型

的成員,數(shù)據(jù)成員和成員函數(shù)的默認(rèn)類型為o

5.只有在繼承的情況下,基類和派生類之間才有賦值兼容性規(guī)則。

6.C++標(biāo)準(zhǔn)庫中的異常層次的根類定義在庫的頭文件

中。

7.運(yùn)算符重載使用的兩種方式是和o

8.C++支持面向?qū)ο蟪绦蛟O(shè)計(jì)的四個(gè)要素是:抽象性、、

和O

模擬題三參考答案

一、單項(xiàng)選擇題(每題2分,共20分)

1.B2.A3.B4.A5.D6.D7.C8.D9.C

10.A

二、填空題(每空2分,共30分)

9.inlinefriend

10.多重繼承

11.靜態(tài)

12.privateprotectedpublic(三者位置可以互換)

private

13.公有

14.exception,h

15.成員函數(shù)友元函數(shù)(二者位置可互換)

多態(tài)性繼承性封裝性(三者位置可互換)

模擬題四

一、單項(xiàng)選擇題(每題2分,共20分)

1.下面有關(guān)構(gòu)造函數(shù)和new運(yùn)算符關(guān)系正確的說法是()

A.new運(yùn)算符不調(diào)用構(gòu)造函數(shù)

B.構(gòu)造函數(shù)一定調(diào)用new運(yùn)算符

C.當(dāng)生成新類的實(shí)例時(shí),先調(diào)用new運(yùn)算符,再調(diào)用構(gòu)造函數(shù)進(jìn)行初始化

D.當(dāng)new運(yùn)算符動(dòng)態(tài)產(chǎn)生類的對象時(shí),new運(yùn)算符也自動(dòng)調(diào)用構(gòu)造函數(shù)

2.下面有關(guān)類性質(zhì)的說法錯(cuò)誤的是()

A.一個(gè)類可以有多個(gè)構(gòu)造函數(shù),但只有一個(gè)析構(gòu)函數(shù)

B.析構(gòu)函數(shù)和構(gòu)造函數(shù)都不能有返回類型

C.不能給析構(gòu)函數(shù)指定參數(shù)

D.一個(gè)類中不可以聲明具有類類型的數(shù)據(jù)成員

3.下面關(guān)于友元函數(shù)描述正確的是()

A.友元函數(shù)是類的成員

B.友元函數(shù)在類的外部聲明

C.友元函數(shù)在類中聲明

D.友元函數(shù)能夠派生

4.下面敘述正確的是()

A.派生類不可以使用私用派生

B.保護(hù)派生時(shí),基類的保護(hù)成員在派生類中是公有的

C.對基類成員的訪問允許二義性

D.賦值兼容規(guī)則也適用于多重繼承的組合

5.有關(guān)運(yùn)算符重載正確的描述是()

A.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的操作個(gè)數(shù)

B.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的優(yōu)先級

C.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的結(jié)合性

D.C++語言允許在重載運(yùn)算符時(shí)改變運(yùn)算符的原來的功能

6.下面描述中,表達(dá)錯(cuò)誤的是()

A.公有繼承時(shí)基類中的public成員在派生類中仍是public的

B.公有繼承是基類中的private成員在派生類中仍是private的

C.公有繼承時(shí)基類中的protected成員在派生類中仍是protected的

D.私有繼承時(shí)基類中的public成員在派生類中是private的

7.拷貝構(gòu)造函數(shù)的參數(shù)是()

A.某個(gè)對象名B.某個(gè)對象的成員名

C.某個(gè)對象的引用名D.某個(gè)對象的指針名

8.下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是()

A.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)B.構(gòu)造函數(shù)在定義類對象時(shí)自動(dòng)執(zhí)行

C.構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)D.構(gòu)造函數(shù)不可以重載

9.數(shù)組作為函數(shù)的形參時(shí),把數(shù)組名作為實(shí)參,傳遞給函數(shù)的是()

A.該數(shù)組的首地址B.該數(shù)組的元素個(gè)數(shù)

C.該數(shù)組中的各元素值D.該數(shù)組的大小

10.通過一個(gè)析構(gòu)函數(shù)調(diào)用虛函數(shù)時(shí),C++系統(tǒng)對該調(diào)用采用()0

A.動(dòng)態(tài)聯(lián)編B.靜態(tài)聯(lián)編C.不確定是哪種聯(lián)編D.函數(shù)重載

二、填空題(每空2分,共30分)

1.成員名限定的符號是,它可以在引用成員時(shí)避免O

2.只有在繼承的情況下,基類和派生類之間才有賦值兼容性規(guī)則。

3.模板分為模板和模板。

4.在用class定義一個(gè)類時(shí),數(shù)據(jù)成員和成員函數(shù)的默認(rèn)訪問權(quán)限

是O

5.已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n;}是一

個(gè)函數(shù)模板的兩個(gè)實(shí)例,則該函數(shù)模板的定義是o(要求寫出函數(shù)模

板的完整定義)

6.靜態(tài)數(shù)據(jù)成員必須在進(jìn)行初始化。

7.含有純虛函數(shù)的類稱為。

8.若Queue是一個(gè)類,aQueue是它的一個(gè)對象,而且該類中定義了一個(gè)靜態(tài)成員

函數(shù)show()則在類外對該成員的函數(shù)進(jìn)行調(diào)用的方式可以為

和O

9.定義內(nèi)聯(lián)函數(shù)所用的關(guān)鍵字為,定義友元所用的關(guān)鍵字

為O

10.使用成員函數(shù)重載運(yùn)算符時(shí),若運(yùn)算符是二元的,則參數(shù)表中有個(gè)操

作數(shù),此時(shí)作為此運(yùn)算符的左操作數(shù)。

模擬題四參考答案

一、單項(xiàng)選擇題(每題2分,共20分)

1.D2.D3.C4.D5.D

6.B7.C8.D9.A10.B

二、填空題(每空2分,共30分)

1.::二義性2.公有3.類函數(shù)4.private

5.template〈classT〉TDBL(Tn){returnn+n;}6.類外7.抽象類

8.aQueue.show。Queue::show()9.inlinefriend10.__1

當(dāng)前對象

模擬題五

一、單項(xiàng)選擇題(每題2分,共20分)

1.下面有關(guān)重載函數(shù)的說法中正確的是()

A.重載函數(shù)必須具有不同的返回值類型;

B.重載函數(shù)形參個(gè)數(shù)必須不同;

C.重載函數(shù)必須有不同的形參列表

D.重載函數(shù)名可以不同;

2.使用string類建立對象的不正確方式是()。

A.stringstr("OK");B.stringstr="OK";

C.stringstr;D.stringstr=,OK';

3.面關(guān)于C++中類的繼承與派生的說法錯(cuò)誤的是()

A.基類的protected成員在公有派生類的成員函數(shù)中可以直接使用

B.基類的protected成員在私有派生類的成員函數(shù)中可以直接使用

C.私有派生時(shí),基類的所有成員訪問權(quán)限在派生類中保持不變

D.繼承可以分為單一繼承與多重繼承

4.面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)與()放在一起,做為一個(gè)相互依存、不可分割

的整體來處理。

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

5.一個(gè)類的析構(gòu)函數(shù)o

A.唯一的B.允許重載C.至多可有兩個(gè)D.只能是缺省的

6.下列各類函數(shù)中,()不是類的成員函數(shù)。

A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.拷貝構(gòu)造函數(shù)

7.在下面選項(xiàng)中,對類的拷貝構(gòu)造函數(shù)的聲明形式是()

A.A::A(&)B.A::A(constA&)C.A::A(A)D.voidA::A(A&a)

8.下面關(guān)于靜態(tài)成員描述正確的是()

A.靜態(tài)成員是對象的數(shù)據(jù)成員

B.靜態(tài)成員是對象的成員

C.靜態(tài)成員是對象的成員函數(shù)

D.靜態(tài)成員不是對象的成員

9.下面關(guān)于關(guān)于成員函數(shù)特征的描述中,錯(cuò)誤的是()

A.成員函數(shù)不可以設(shè)置參數(shù)的默認(rèn)值

B.成員函數(shù)可以重載

C.成員函數(shù)可以是內(nèi)聯(lián)函數(shù)

D.成員函數(shù)可以是靜態(tài)的

10.下面敘述正確的是()

A.基類的保護(hù)成員在派生類中仍然是保護(hù)的

B.基類的公有成員在派生類中仍然是公有的

C.基類的私有成員在派生類中是私有的

D.從基類派生時(shí),可以有3種派生方法

二、改錯(cuò)題,指出程序中的錯(cuò)誤并改正之。

1.classbase{

inta;

public:

intb;intf(inti,intj);

);

classderive:base{

intc;

public:

intbase::b;

base::f(inti,intj);

);

[1]_______________________

[2]_______________________

2.#include<iostream.h>

classA{

public:

voidA(inti=0){m=i;}

voidshow(){cout?m;}

void~A(){)

private:

intm;};

voidmainO

{Aa(5);

a.m+=10;

a.show();

}

[3]_______________________

[4]_______________________

[5]_______________________

3.#include<iostream>

usingnamespacestd;

classbase{inta;

staticintb;

public:

base(intm,intn):a(m),b(n){}

staticintgeta(){returna;}

staticintgetb(){returnb;}

voidshow(){cout?geta()?w,<<getb()<<endl;}

);

base::intb=45;

voidmain(){}

[6]_______________________

[7]_______________________

[8]_______________________

模擬題五參考答案

一、單項(xiàng)選擇題(每題2分,共20分)

1.C2.D3.C4.A5.A

6.C7.B8.B9.A10.D

二、改錯(cuò)題,指出程序中的錯(cuò)誤并改正之。

[1]intbase::b;___________

⑵base::f(inti,intj);

[1]base::b;(或訪問聲明僅僅調(diào)整名字的訪問,不反為它說明任何類型)

[2]base::f;(或訪問聲明不應(yīng)說明函數(shù)參數(shù))

[3]voidA(inti=0){m=i;}

[4]void~A()7F-

[5]a.m+=10;

[3]構(gòu)造函數(shù)去掉void(或構(gòu)造函數(shù)不能指定返回值類型)

[4]析構(gòu)函數(shù)去掉void(或析構(gòu)函數(shù)不能指定返回值類型)

[5]對象不能訪問私有成員

[6]base(intm,intn):a(m),b(n){}

[7]staticintgeta(){returna;}

[8]base::intb=45;

[6]不能通過構(gòu)造函數(shù)初始化靜態(tài)數(shù)據(jù)成員(只要把b(n)去掉即可)

[7]靜態(tài)成員函數(shù)中不能引用非靜態(tài)成員數(shù)據(jù)成員(或去掉static)

[8]intbase::b=45;

三、改錯(cuò)題,指出程序中的錯(cuò)誤并改正之。

1.Template<classT>

Tfun(Tx)

{Ty;

y=T-2*x;

retruny;

)

[1]___________________________

[2]___________________________

2.classbase

{public:f();f(inta);f(char*p);

};

classderive:base

{public:

voidf(ints);base::f;

);

E3]

3.Sinclude<iostream.h>

classA

{public:

voidsetA(int);

voidshowA();

private:

inta;

);

classB

{public:

voidsetB(int);

voidshowB();

private:

intb;

);

classC:publicA,privateB

{public:

voidsetC(int,int,int);

voidshowC();

private:

intc;

);

voidA::setA(intx)

{a=x;}

voidB::setB(intx)

{b=x;}

voidC::setC(intx,inty,intz)

(

a=x;

b=y;

setA(x);

setB(y);

c=z;

[1]Template<classT>

[2]y=T-2*x;

[3]base::f;

[4]a=x;

[5]b=y;

[6]obj.setB(6);

[7]obj.showBO;

[8]return0;

[1]改為templateVclassT>

[2]T不能用作-的操作數(shù)

[3]派生類中具有與基類同名的函數(shù),則基類中的此函數(shù)不能在派生類中

進(jìn)行訪問聲明

[4]派生類不能訪問基類A類的私有成員

[5]派生類不能訪問基類B類的私有成員

[6]不能訪問B類的公有成員selB

[7]不能訪問B類的公有成員成owB

[8]去掉此語句,或主函數(shù)的返回值void去掉或改為int

《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》模擬試題一

一、填空

1.在類中必須聲明成員函數(shù)的原型,成員函數(shù)的實(shí)現(xiàn)部

分可以寫在類外。

2.如果需要在被調(diào)函數(shù)運(yùn)行期間,改變主調(diào)函數(shù)中實(shí)參變量的值,則

函數(shù)的形參應(yīng)該是引用類型或指針類型。

3.抽象類只能作為基類使用,而不能聲明它的對象。

4.進(jìn)行函數(shù)重載時(shí),被重載的同名函數(shù)如果都沒有用const修飾,則

它們的形參個(gè)數(shù)或類型必須不同。

5.函數(shù)的遞歸調(diào)用是指函數(shù)直接或間接地調(diào)用-一。

6.拷貝構(gòu)造函數(shù)的形參必須是本類對象的引用。

二、閱讀下列程序,寫出其運(yùn)行時(shí)的輸出結(jié)果

如果程序運(yùn)行時(shí)會(huì)出現(xiàn)錯(cuò)誤,請簡要描述錯(cuò)誤原因。

1.請?jiān)谝韵聝深}中任選一題,該題得分即為本小題得分。如兩題都答,

則取兩題得分之平均值為本小題得分。

(1)程序:

#include<iostream.h>{private:

#include<string.h>charmsg[30];

classBaseprotected:

intn;

public:classDerived2:publicDerivedl

Base(chars[],intm=0):n(m)(

{strcpy(msg,s);private:

}intn;

voidoutput(void)public:

{cout<<n<<endl<<msg<<endl;Derived2(intm=2):

}Derivedl(m-1)

);(n=m;}

classDerivedl:publicBasevoidoutput(void)

({cout?n<<endl;

private:Derivedl::output();

intn;)

public:);

Derivedl(intm=l):intmain()

Base("Base”,m-1)(

{n=m;}BaseB(〃BaseClass”,1);

voidoutput(void)Derived2D;

{cout?n<<endl;B.output();

Base::output();D.output();

)

運(yùn)行結(jié)果:

1

BaseClass

2

1

0

Base

(2)程序:

#include<iostream.h>{cout?,zDestroying..,,<<i?endl;

classSamp)

{public:intGetMuti(){returni*j;}

voidSetij(inta,intb){i=a,j=b;}protected:

~Samp()inti;

intj;return1;

};)

for(intj=0;j<5;j++)

p[j]?Setij(j,j);

intmain()for(intk=0;k<5;k++)

(cout<X"Muti[〃<<k<<〃]is:〃

Samp*p;<<p[k].GetMuti()<<endl;

p二newSamp[5];delete[]p;

if(!p)return0;

{cout<<z,Allocationerror\nz/;

運(yùn)行結(jié)果:

Muti[0]is:0

Muti[1]is:1

Muti[2]is:4

Muti[3]is:9

Muti[4]is:16

Destroying..4

Destroying..3

Destroying..2

Destroying..1

Destroying..0

2.請?jiān)谝韵聝深}中任選一題,該題得分即為本小題得分。如兩題都答,

則取兩題得分之平均值為本小題得分。

(1)程序:

#include<iostream.h>voidSet(void);

#include<stdlib.h>^Vector(void);

classVectorprotected:

(intsize;

public:int?buffer;

Vector(ints=100);};

int&Elem(intndx);

voidDisplay(void);Vector::Vector(ints)

buffer二nowint[size=s];voidVector::Set(void)

for(intj=0;j<size;j++)

Elem(j)=j+1;

)

int&Vector::Elem(intndx)

(Vector::^Vector(void)

if(ndx<0||ndx>=size)(

(delete[]buffer;

cout<<z,errorinindexz,<<endl;)

exit(1);

}intmain()

returnbuffer[ndx];(

)Vectora(10);

Vectorb(a);

voidVector::Display(void)a.Set();

(b.Display();

for(intj=0;j<size;j++)

cout?Elem(j)?endl;)

}

運(yùn)行結(jié)果:

1

2

3

4

5

6

7

8

9

10

最后出現(xiàn)錯(cuò)誤信息,原因是:聲明對象b是進(jìn)行的是淺拷貝,b與a共用同一個(gè)buffer,

程序結(jié)束前調(diào)用析構(gòu)函數(shù)時(shí)對同一內(nèi)存區(qū)進(jìn)行了兩次釋放。

(2)程序:

#include<iostream.h>cout<</,a,sage:〃<<a.GetAge()<<endl;

classCATcout?//b,sage:"<<b.GetAge()<<endl;

(

public:

CATO;

//CAT(constCAT&);

飛AT();

intGetAge(){return*itsAge;}

voidSetAge(intage)

{*itsAge=age;}

protected:

int*itsAge;

);

CAT::CAT()

(

itsAge二newint;

*itsAge=5;

)

CAT:rCAT()

(

deleteitsAge;

itsAge=NULL;

)

voidmainO

(

CATa;

cout<<〃a'sage:〃<<a,GetAge()?endl;

a.SetAge(6);

CATb(a);

cout?,,a,sage:"<<a.GetAge()?endl;

cout?/,b,sage:"<<b.GetAge()?endl;

a.SetAge(7);

C++模擬試題2012-06-07

運(yùn)行結(jié)果:

a'sage:5

a'sage:6

b'sage:6

asage:7

b'sage:7

最后出現(xiàn)錯(cuò)誤信息,原因是:聲明對象b是進(jìn)行的是淺拷貝,b與a共用同一個(gè)buffer,

程序結(jié)束前調(diào)用析構(gòu)函數(shù)時(shí)對同一內(nèi)存區(qū)進(jìn)行了兩次釋放。

26

C++模擬試題2012-06-07

《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》模擬試題二

一、單項(xiàng)選擇題(本大題共10小題,每小題2分,共20分)

1.說明內(nèi)聯(lián)函數(shù)的關(guān)鍵字是()。

A.inlineB.virtualC.defineD.static

2.假定CAb為一個(gè)類,則執(zhí)行CAboX;語句時(shí)將自動(dòng)調(diào)用該類的()

A.有參構(gòu)造函數(shù)B.無參構(gòu)造函數(shù)

C.拷貝構(gòu)造函數(shù)D.賦值重載函數(shù)

3.cin是某個(gè)類的標(biāo)準(zhǔn)對象的引用,該類是()。

A.ostreamB.istreamC.stdoutD.stdin

4.下面的哪個(gè)保留字不能作為函數(shù)的返回類型?()

A.xoidB.htC.navD.long

5.不能參與重載的運(yùn)算符是()。

A.類B.函數(shù)C.函數(shù)模板D.運(yùn)算符

6.由于數(shù)據(jù)隱藏的需要,靜態(tài)數(shù)據(jù)成員通常被說明為()。

A.私有的B.公有的C.保護(hù)的D.不可訪問的

7.編譯時(shí)多態(tài)性使用什么獲得?()

A.重載函數(shù)B.繼承C.虛函數(shù)D.B和C

8.拷貝構(gòu)造函數(shù)的參數(shù)通常是(

A.無特殊要求B.指向?qū)ο蟮闹羔?/p>

C.自已類對象的常引用D.對象

9.C++有幾種聯(lián)編?()

A.1種B.2種C.3種D.4種

10.基類和派生類可以分別稱為()。

A.“大類”和“小類”B.“父類”和“子類”

C.“小類”和“大類”D.“子類”和“父類”

二、判斷正誤題(本大題共5小題,每小題2分,共10分)判斷正誤,在題后的括號內(nèi),

正確的劃上“J”錯(cuò)誤的劃上“X\

1.不可以定義抽象類的對象。()

2.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在第一次調(diào)用內(nèi)聯(lián)函數(shù)之前。()

3.模板函數(shù)與函數(shù)模板的意義完全相同。()

4.只有常成員函數(shù)才可以操作常對象。()

5.引用可以不初始化。()

三、填空題(本大題共5小題,每小題2分,共10分)

1.設(shè)函數(shù)max是由函數(shù)模板實(shí)現(xiàn)的,并且max(3.5,5)和max(3,5)都是正確的函數(shù)調(diào)用,則

此函數(shù)模板具有()個(gè)類型參數(shù)。

2.在C++中,函數(shù)重載與虛函數(shù)幫助實(shí)現(xiàn)了類的()性。

3.由static修飾的數(shù)據(jù)成員為該類的所有對象(

4.重載函數(shù)在參數(shù)類型或參數(shù)個(gè)數(shù)上不同,但()相同。

5.使用new建立的動(dòng)態(tài)對象在不用時(shí)必須用()釋放所占用的空間。

27

C++模擬試題2012-06-07

四、程序分析題(本大題共4小題,每小題5分,共20分)給出下面各程序的輸出結(jié)果。

1.閱讀下面程序,寫出輸出結(jié)果。

#include<iostream>

usingnamespacestd;

classCPosition

(

public:

CPosition(intiPositionX=0,intiPositionY=0):m_iPositionX(iPositionX)

(

mJPositionY=iPositionY;

)

intGetPositionX()const

(

returnm_iPositionX;

)

intGetPositionY()const

(

returnm_iPositionY;

)

voidSetPositionX(intiPositionX)

(

m_iPositionX=iPositionX;

)

voidSetPositionY(intiPositionY)

(

mJPositionY=iPositionY;

)

private:

intm_iPositionX;〃X坐標(biāo)

intm_iPositionY;//X坐標(biāo)

};

intmain(void)

CPositionoPostion1;

constCPositionoPostion2(6,8);

28

C++模擬試題2012-06-07

cout?oPostion1.GetPositionX()?endl;

oPostionl.SetPositionX(l6);

cout?oPostion1.GetPositionX()?endl;

oPostionLSetPositionY(18);

cout?oPostion1.GetPositionY()?endl;

cout?oPostion2.GetPositionX()?endl;

cout?oPostion2.GetPositionY()?endl;

return0;

)

上面程序的輸出結(jié)果為:

2.閱讀下面程序,寫出輸出結(jié)果。

#include<iostream>

usingnamespacestd;

template<classType〉

classCTest

(

public:

CTest(Typem_tArray[J,intiSize):m_pArray(m_tArray)

(

m_iSize=iSize;

)

voidPrint()const

(

for(inti=0;i<m_iSize;i++)

(

cout?m_pArray[i]?”

)

)

private:

Type*m_pArray;

intm_iSize;

);

29

C++模擬試題2012-06-07

intmain(void)

(

inta[]={l,0,8};

doubleb[]={L6,1.8);

CTest<int>oTestl(a,3);

oTes

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論