當前位置:才華齋>計算機>計算機二級>

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

計算機二級 閱讀(8.33K)

同志們在備考計算機二級考試期間,可以適當放鬆,同時也要靜下心來做好接下來的複習。以下是本站小編搜尋整理的一份計算機二級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