糯米文學吧

位置:首頁 > IT認證 > 計算機等級

2016最新計算機二級C++上機試題及答案

1有如下程序:

2016最新計算機二級C++上機試題及答案

#include

using namespace std;

class Base{

protected:

Base(){cout<<’A’;}

Base(char C){cout<

};

class Derived:public Base{

public:

Derived(char C){tout<

};

int main(){

Derived dl(’B’);

retum 0;

}

執行這個程序的輸出結果是(  )。

參考答案:C

參考解析:本題考查派生類的構造函數和析構函數.在定義一個派生類的對象時,先調用基類的構造函數,然後再執行派生類的構造函數;對象釋放時,先執行派生類的析構函數,再執行基類的析構函數。本題中定義了一個派生類對象d1,首先執行基類的構造函數,輸出A;然後執行派生類的構造函數,輸出B。所以答案為c。

2下列符號中能夠作為C++標識符的是( )。

stB.2aC._t

參考答案:C

參考解析:本題考查c++標識符的命名規則,其規則有如下幾點:①所有標識符必須由字母、數字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用c++已有的關鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項A是關鍵字,選項B不能以數字開頭,選項D包含了字符”一”,且不能以此字符開頭。故答案為C。

3有如下程序:

#include

using namespace std;

class Base

{

private:

void funl()const{tout<<”funl”;}

protected:

void fun2()const{tout<<”fun2”;}

public:

void fun3()const{cout<<”fhll3”;}

};

class Derived:protected Base

{

public:

void fhn4()const{cout<<”filn4”;}

};

int main()

{

Derived obj;

();//①

2();//②

();//③

4();//④

return U:

}

其中有語法錯誤的語句是(  )。

A.①②③④B.①②③C.②③④D.①④

參考答案:B

考解析:本題考查保護繼承中派生類對基類的訪問屬性,受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,保護基類的所有成員在派生類中都被保護起來,在類外不能訪問,所以①②③錯誤。

4有如下程序:

#include

using namespace std;

class Instrument{

public:

virtual void Display()=0;

};

class Pian0:public Instrument}

public:

void Display(){/*函數體略*" >

};

intmain(){

Instrument S;

Instrument*P=0:

//…;

return 0;

}

下列敍述中正確的是(  )。

A.語句“Insturment*P=0;”編譯時出錯

B.語句“Instnunent s;”編譯時出錯

C.類Pian0中的Display函數不是虛函數

D.類Instrument是一個虛基類

參考答案:B

參考解析:本題考查純虛函數和抽象類,純虛函數是在聲明虛函數時被“初始化”為0的函數,包含純虛函數的類為抽象類,抽象類不能被實例化,所以語句“Instrmnent s;”在編譯時出錯。

5如下函數模板:

templateT square(T x){return x*x;} 其中T是(  )。

A.函數形參B.函數實參C.模板形參D.模板實參

參考答案:C

參考解析:本題考查模板函數的基本概念,根據模板函數的定義,T是模板形參,所以答案為C。

6為了提高函數調用的實際運行速度,可以將較簡單的函數定義為( )。

A.內聯函數B.重載函數C.遞歸函數D.函數模板

參考答案:A

參考解析:一般函數進行調用時,要將程序執行權轉到被調用函數中.然後再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換,一般只將{將規模很小而使用頻繁的函數聲明為內聯函數,可以避免函數調用時間開銷,從而提高運行速度。

7有如下程序:

#inClude using namespaCe std; Class Point{

publiC:

statiC int number;

publiC:

Point(  )er++;} ~Point(  ){number--;}

}; , int P0int::number=0;

int main(  ){

Point *ptr:

Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’

}

Point C;

Cout<

return 0; }

執行這個程序的輸出結果是(  )。

A.3B.4C.6D.7

參考答案:C

參考解析:本題考查默認構造函數.題目中定義.個對象A、B以及對象數組Point[3],又定義了對象C,共執行6次構造函數,number變為了6,所以本題答案為C。

8有三個關係R、S和T如下.

2016年9月計算機二級C++上機考試衝刺試題(2)

由關係R和s通過運算得到關係T,則所使用的運算為( )。