糯米文學吧

位置:首頁 > 計算機 > 計算機二級

2017年9月計算機二級C++備考試題及答案

同志們在備考計算機二級考試期間,可以適當放鬆,同時也要靜下心來做好接下來的複習。以下是本站小編搜索整理的一份計算機二級C++備考試題及答案,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!

2017年9月計算機二級C++備考試題及答案

1[填空題]使用class定義的表中,成員的默認訪問權限是 (1) 的;由struct定義的類中,成員的默認的訪問權限是 (2) 的。

參考答案:(1)私有、(2)公有

2[單選題]數據管理技術發展的三個階段中,(  )沒有專門的軟件對數據進行管理。 Ⅰ.人工管理階段 Ⅱ.文件系統階段 Ⅲ.數據庫階段

A.僅ⅠB.僅ⅢC.Ⅰ和ⅡD.Ⅱ和Ⅲ

參考答案:A

參考解析:數據管理技術發展的三個階段中,只有人工管理階段,沒有操作系統,沒有管理數據的軟件,數據處理方式是批處理。在文件系統階段,操作系統中已經有了專門數據管理軟件,一般稱為文件系統。在數據庫系統階段,出現了統一管理數據的專門軟件系統,即數據庫管理系統。

3[單選題]下列關於類和對象的敍述中,錯誤的是(  )

A.一個類只能有一個對象

B.對象是類的具體實例

C.類是對某一類對象的抽象

D.類和對象的關係是一種數據類型與變量的關係

參考答案:A

4[單選題] 下列説法正確的是(  )。

A.內聯函數在運行時將該函數的目標代碼插入每個調用該函數的地方

B.內聯函數在編譯時將該函數的目標代碼插入每個調用該函數的地方

C.類的內聯函數必須在類體內定義

D.類的內聯函數必須在類體外通過加關鍵字inline定義

參考答案:B

參考解析:本題考查的是內聯函數的定義,引入內聯函數是為了解決程序中函數調用的效率問題,是以目標代碼的增加為代價換取時間的節省;一般函數在運行時被調用,而調用的內聯函數在編譯時就被替代了,如果不加in-line關鍵字,則編譯器會將在類説明部分定義的任何函數都被認定為內聯函數。

5[單選題]

參考答案:B

6[單選題] 將x+y*z中的“+”用成員函數重載,“*”是友元函數重載應寫為(  )。

ator+(operator*(y,z))

ator+(operator*(y,z))

ator+(X*(y,z))

D.x+(operator*(y,z))

參考答案:B

參考解析:在定義了重載運算符後的函數後,函數operator+重載了運算符“+”。如果在類以外的其他地方定義了一個函數,在類體中用friend對該函數進行聲明,此函數就稱為本類的友元函數。“*”用友元函數重載就是運算符函數不作為成員函數,而把它放在類外,“*”被改寫為“operator*”。“+”為成員函數重載,ator+。所以“x+y*z”被改寫為“ator+(operator*(y,z))”。

7[單選題]對於類定義:

classA{

public:

virtualvoidfuncl(){}

voidfunc2(){}

};

classB:publicA{

public:

voidfuncl(){cout<<"classBfunc1"<

virtualvoidfunc2(){cout<<"classBfunc2"

<

};

下面正確的敍述是(  )。

A.A::func2(  )和B::func1(  )都是虛函數

B.A::rune2(  )和B::func1(  )都不是虛函數

C.B::func1(  )是虛函數,而A::fune2(  )不是虛函數

D.B::func1(  )不是虛函數,而A::func2(  )是虛函數

參考答案:C

參考解析:基類中説明的虛函數,在派生類中自然就是虛函數,所以類B中funcl()是虛函數;而類A中的func2()沒有被關鍵字virtual修飾;所以不是虛函數。

8[單選題] 軟件詳細設計產生的圖如下:

該圖是( )。

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

參考答案:C

參考解析:N—S圖提出了用方框圖來代替傳統的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之後提出的又一種主要用於描述軟件詳細設計的圖形表示工具,所以B不對。E—R圖是數據庫中的用於表示E—R模型的圖示工具,所以D不對。根據圖中所示表示方法是進行軟件詳細設計時使用的程序流程圖。

9[單選題] 設int a=1,b=2;,則(a++)+b和a+++b這兩個表達式的值分別為( )。

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

參考答案:A

參考解析:單目的++運算優先級高於雙目的+運算,不過++的結合性是自右向左的,而+是自左向右的,所以上面的兩個表達式都是先計算a+b的值之後,a再自加1。

2[單選題] 若有説明:inta[3][4];則對a數組元素的非法引用是(  )。

A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]

參考答案:D

參考解析:數組的下標從0開始,至n-1為止,因此選項D是正確答案。

3[單選題]下列關於派生類敍述中,錯誤的是

A.派生類至少要有一個基類

B.派生類中包括了從基類繼承的成員

C.一個派生類可以作為另一個派生類的基類

D.基類成員被派生類繼承以後訪問權限保持不變

參考答案:D

5[單選題] 層次型、網狀型和關係型數據庫劃分原則是( )。

A.己錄長度B.文件的大小C.聯繫的複雜程度D.數據之間的聯繫方式

參考答案:D

參考解析:層次模型的基本結構是樹形結構,網狀模型是一個不加任何條件限制的無向圖,關係模型採用二維表來表示,所以三種數據庫的劃分原則是數據之間的聯繫方式。

6[單選題]在類的定義中,用於為對象分配內存空間,對類的數據成員進行初始化並執行其他內部管理操作的'函數是

A.友元函數 B.虛函數 C.構造函數 D.析構函數

參考答案:C

7[單選題] 下列關於運算符重載的描述中,錯誤的是(  )。

A.::運算符不能重載

B.類型轉換運算符只能作為成員函數重載

C.將運算符作為非成員函數重載時必須定義為友元

D.重載口運算符應完成“下標訪問”操作

參考答案:C

參考解析:除了·、*、→*、::、?:這五個運算符外,其他運算符都可以重載。=、[]、()、→以及所有的類型轉換運算符只能作為成員函數重載。口作為成員函數重載時,應完成“下標訪問”操作,使得向指定下標處的元素賦值或取值成為可能。

8[單選題] 由於常對象不能被更新,因此(  )。

A.通過常對象只能調用它的常成員函數

B.通過常對象只能調用靜態成員函數

C.常對象的成員都是常成員

D.通過常對象可以調用任何不改變對象值的成員函數

參考答案:A

參考解析:本題考查常對象的基本知識,常對象只能調用它的常成員函數,而不能調用非const函數,常對象的成員函數不一定都是常成員函數,只需保證其數據成員是常數據成員即可。所以本題選A。

10[簡答題]使用VC++6.0打開考生文件夾下的源程序文件,該程序運行時有錯,請改正其中的錯誤,使程序正確運行,其輸出的結果為

30

130

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

試題程序:

#include

inta=10;

classTC

{

public:

TC()

{

a=b=0:

}

voiddisplay()

{

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

cout<

}

voidfunc(inta)

{

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

a+=a:

}

voidfunc2()

{

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

a+=a:

}

private:

inta,b;

};

voidmain()

{

TCobj;

(3);

lay();

2();

lay();

}

參考解析:

(1)應改為“cout<

(2)應改為“this->a+=a;”。

(3)應改為“a+=::a;”。

【解析】成員函數display打印變量a和b的值,即cout輸出a和b的值,cout流中的數據是用流插入運算符“<<”順序加入的,因此“<”不正確,第1處的語句應改成“cout