C++面向對象程序設計考試試卷(詳細講解)_第1頁
C++面向對象程序設計考試試卷(詳細講解)_第2頁
C++面向對象程序設計考試試卷(詳細講解)_第3頁
C++面向對象程序設計考試試卷(詳細講解)_第4頁
C++面向對象程序設計考試試卷(詳細講解)_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

6PAGEC++面向對象程序設計考試試卷(詳細講解)單項選擇題(共20題,每題1分,共20分)

1、下列關于C++標識符的命名不合法的是C與C#一樣

A.PadB.name_1C.A#bcD._a12

2、若有以下類型標識符定義:()D

intx=2;charw='a';floaty=23.45f;doublez=45.6712;

則表達式w*x+y-z的結果類型是

A.floatB.charC.intD.double

6、對重載函數(shù)形參的描述中,錯誤的是D重載是重點

A.參數(shù)的個數(shù)可能不同

B.參數(shù)的類型可能不同

C.參數(shù)的順序可能不同

D.參數(shù)的個數(shù)、類型、順序都相同,只是函數(shù)的返回值類型不同

7、以下能正確定義數(shù)組并正確賦初值的語句是D

A.intN=5,b[N][N];

B.inta[2]={{1},{3},{4},{5}};

C.intc[2][]={{1,2},{3,4}};

D.intd[3][2]={{1,2},{3,4}};

8、下列給字符數(shù)組進行的初始化中,不正確的是D

A.chars1[]="abcd";

B.chars2[3]={'x','y','\0'};

C.chars3[]={'a','x','y','\0'};

D.chars4[6]={"xyz","mnp"};

9、通常的拷貝構造函數(shù)的參數(shù)是拷貝構造函數(shù)功能:用一個已有的對象來初始化一個被創(chuàng)建的同類對象是一種特殊的構造函數(shù)??截悩嬙旌瘮?shù)有深拷貝淺拷貝:默認的拷貝構造函數(shù)是淺拷貝,只復制對象空間不復制對象資源。深拷貝需要同時復制對象空間和資源。這個可能也是重點C

A.某個對象名B.某個對象成員名

C.某個對象的引用D.某個對象的指針名

10、關于構造函數(shù)特點的描述中,錯誤的是A

A.定義構造函數(shù)必須指出類型(構造函數(shù)特點是無返回類型)

B.構造函數(shù)的名字與該類的類名相同

C.一個類中可定義0至多個構造函數(shù)(不寫構造函數(shù),系統(tǒng)會自動生成一個空的構造函數(shù))

D.構造函數(shù)是一種成員函數(shù)

11、下面程序的運行結果為C

#include<iostream.h>

intadd(inta,intb);

voidmain()

{

externextern可以置于變量或者函數(shù)前,以標示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義intx,y;

cout<<add(x,y)<<endl;

}

intx=20,y=5;

intadd(inta,intb)

{

ints=a+b;

returns;

}

A.20B.5C.25D.編譯會提示出錯信息

12、關于常成員的描述中,錯誤的是B

A.常成員包含常數(shù)據(jù)成員和常成員函數(shù)兩種

B.常數(shù)據(jù)成員必須是公有的

C.常數(shù)據(jù)成員要使用構造函數(shù)成員初始化列表進行初始化

D.常對象只能調用它的常成員函數(shù),不能調用其它的成員函數(shù)

13、關于友元函數(shù)允許另一個類或函數(shù)訪問你的類的東西。ClassA{Private:inti=0;Friendclassb//聲明}ClassB{}Voidmain(){Aa1=newA();Bb1=newB();Intj=b1.i;\\可直接訪問A類里的}如B是A的友元類,那么a對b完全開放包括private,也就是B可以訪問A里任何東西的描述中,錯誤的是B

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

B.友元函數(shù)只能訪問類中私有成員

C.友元函數(shù)破壞隱藏性,盡量少用

D.友元函數(shù)說明在類體內(nèi),使用關鍵字friend

14、如果有intx,*p;floaty,*q;則下面操作正確的是C

A.p=xB.p=q

C.p=&x同類型,地址D.p=&y

16、若數(shù)組名作實參而指針變量作形參,函數(shù)調用時實參傳給形參的是D

A.數(shù)組的長度

B.數(shù)組第一個元素的值

C.數(shù)組所有元素的值

D.數(shù)組第一個元素的地址

17、對于動態(tài)分配內(nèi)存空間描述正確的是D

A.使用new運算符分配的內(nèi)存空間的長度必需是常量

B.delete運算符可以釋放動態(tài)的存儲空間和靜態(tài)的存儲空間

C.由new分配的內(nèi)存空間是不連續(xù)的

D.delete運算符只能釋放由new分配的動態(tài)存儲空間

18、能夠釋放對象所占資源的是()A

A.析構函數(shù)與構造函數(shù)對應,構造函數(shù)分配空間,析構函數(shù)釋放B.數(shù)據(jù)成員

C.構造函數(shù)D.靜態(tài)成員函數(shù)

19、虛函數(shù)的定義是在基類中進行的,定義時需要冠以關鍵字C

A.staticB.frend

C.virtualD.public

20、在C++中串流類是在頭文件strstrea.h中定義的,下列不屬于串流類的是)C

A.strstreamB.ostrstream

C.ofstreamD.istrstream

二、填空題(共9題16空,每空1分,共16分)

1、函數(shù)重載時,編譯系統(tǒng)會根據(jù)__形參的類型__或__形參的個數(shù)__來區(qū)分。與返回類型無關

2、若有chara[80];則cin>>aCout<<“”代表輸出表示從鍵盤上讀入一個__字符串__到數(shù)組a中。

3、若希望用一個已有對象來構造另一個同類型的對象,可以使用__拷貝構造函數(shù)__來實現(xiàn)。

4、靜態(tài)成員(static)屬于__類__,而不屬于__任何一個對象__,它被同一個類的所有對象共享。

5、類的繼承方式有____繼承、____繼承和____繼承。public(或公有)private(或私有)protected(或保護)

6、重載運算符的含義必須清楚,不能有__二義性__。

7、按照聯(lián)編進行階段的不同,聯(lián)編方法可分為兩種:__動態(tài)聯(lián)編__和__靜態(tài)聯(lián)編__。

8、當基類中的某個成員函數(shù)被聲明為虛函數(shù)后,此虛函數(shù)就可以在一個或多個派生類中被重新定義,在派生類中重新定義時,其函數(shù)原型,包括返回類型、__函數(shù)名__、__參數(shù)個數(shù)__、參數(shù)類型以及參數(shù)的順序都必須與基類中的原型完全相同。

9、C++的I/O是以字節(jié)流的形式實現(xiàn)的,每個C++編譯系統(tǒng)都帶有一個面向對象的輸入/輸出軟件包,這就是I/O流類庫。

三、判斷題(共10題,每題1分,共10分)

1、C++語言支持封裝性和繼承性,不支持多態(tài)性。×

2、關系運算符可以用來比較兩個字符的大小,也可用來比較兩個字符串的大小。)×

3、字符串"sdfgh"的長度是5?!陶加每臻g好像是6,字符串有個結尾符號占空間。

4、引用和指針都可作函數(shù)參數(shù)?!?/p>

5、友元函數(shù)說明在類體內(nèi),它是一種成員函數(shù)?!琳f明(定義)在類外,聲明在類里面

6、友元類必須被說明為公有成員?!?/p>

7、純虛函數(shù)是在基類中說明的虛函數(shù),它在該基類中沒有定義具體的操作內(nèi)容?!?/p>

8、析構函數(shù)不能被繼承?!?/p>

9、運算符重載以后,其優(yōu)先級和結合性都不能改變。√

10、在C++中,函數(shù)名實際上是一個指針,它指向函數(shù)的入口。√

四、分析程序,回答所提出的問題(16分)

1、#include<iostream.h>

classB;

classA

{

public:

A(inti)

{a=i;}

friend考點友元intF(A&f1,B&f2);

private:

inta;

};

classB

{

public:

B(inti)

{b=i;}

friendintF(A&f1,B&f2);

private:

intb;

};

intF(A&f1,B&f2)\\可以訪問類A,類B里的任何成員

{

return(f1.a+f2.b)*(f1.a-f2.b);

}

拷貝構造函數(shù)功能:用一個已有的對象來初始化一個被創(chuàng)建的同類對象是一種特殊的構造函數(shù)??截悩嬙旌瘮?shù)有深拷貝淺拷貝:默認的拷貝構造函數(shù)是淺拷貝,只復制對象空間不復制對象資源。深拷貝需要同時復制對象空間和資源。這個可能也是重點extern可以置于變量或者函數(shù)前,以標示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義允許另一個類或函數(shù)訪問你的類的東西。ClassA{Private:inti=0;Friendclassb//聲明}ClassB{}Voidmain(){Aa1=newA();Bb1=newB();Intj=b1.i;\\可直接訪問A類里的}如B是A的友元類,那么a對b完全開放包括private,也就是B可以訪問A里任何東西同類型,地址與構造函數(shù)對應,構造函數(shù)分配空間,析構函數(shù)釋放Cout<<“”代表輸出考點友元①36

②n1和n2兩個對象,n1屬于A類,n2屬于B類。

因為B類的定義在A類后,而A類中要引用B類。

③語句An1(10);和語Bn2(8);

A類的構造函數(shù):A(inti){a=i;}

B類的構造函數(shù):B(inti){b=i;}

④函數(shù)F是友元函數(shù)。

它的作用是:提供了不同類或對象的成員函數(shù)之間、類的成員函數(shù)與一般函數(shù)之間共享數(shù)據(jù)的機制。(關鍵答出共享數(shù)據(jù)、或答出通過友元可以訪問到封裝與類A、B中的數(shù)據(jù))

五、閱讀程序,寫出運行結果(共2題,第1題6分,第2題8分,共14分)

1、#include<iostream.h>

intfunc(inta)

{

intb=0;

static考點intc=4;\\靜態(tài)變量

b++;c--;

return(a+b+c);

}

voidmain()

{

inta=2;

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

cout<<func(a+j)<<"";

}考點輸出結果為:66注意66中間有空格2、#include<iostream.h>

classX

本題考點是構造函數(shù)重載,及析構函數(shù)與構造函數(shù)的調用順序{

public:C++默認的成員是Private

X(inti)

{x=i;cout<<”int:”<<i<<’,’<<”called\n”;}

X(doublei)

{x=(int)i*2;cout<<”double:”<<i<<’,’<<”called\n”;}

~X()析構函數(shù)在對象被delete或者對象的生存期完結的時候系統(tǒng)自動調用執(zhí)行。一個類只有一個析構函數(shù)

{cout<<”~X():”<<x<<’,’<<”called\n”;}

private:

intx;

};

voidmain()

{

inta=8;

doubleb=11.0;

Xx1(55)調用X(inti),x2(a*5)調用X(inti);

Xx3調用X(intI)=X(2*a);

Xx4調用X(doubleI)=X(b);

}本題考點是構造函數(shù)重載,及析構函數(shù)與構造函數(shù)的調用順序C++默認的成員是Private析構函數(shù)在對象被delete或者對象的生存期完結的時候系統(tǒng)自動調用執(zhí)行。一個類只有一個析構函數(shù)調用X(inti)調用X(inti)調用X(intI)調用X(doubleI)輸出結果為:int:55,called//X1被創(chuàng)建

int:40,called//x2被創(chuàng)建

int:16,called//x3被創(chuàng)建

double:11,called//x4被創(chuàng)建x值為22,顯示的是i值,不改變

~x<>:22,called//析構函數(shù)的調用順序與構造函數(shù)調用順序相反

~x<>:16,called

~x<>:40,called

~x<>:50,called

六、編寫程序(共2題,第1題10分,第2題14分,共24分)

1、輸入一組數(shù)據(jù)以-1作為結束標志,要求刪除其它數(shù)據(jù)只保留能被2整除的數(shù)據(jù)并輸出結果。#include<iostream.h>

voidmain()

{

intb[50],x,n=0;

cin>>x;

while(x!=-1)

{

b[++n]=x;

cin>>x;

}

for(inti=1,j=0;i<=n;i++)

if(b[i]%2==0)b[++j]=b[i];

for(i=1;i<=j;i++)

cout<<b[i]<<'\t';

cout<<endl;

}

2、定義一個日期類Date,包含年、月、日三個數(shù)據(jù)成員,以及一個求第二天日期的成員函數(shù)和輸出日期的成員函數(shù)。#include<iostream.h>

溫馨提示

  • 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

提交評論