2016計算機二級《C++》選擇題練習與解析

1關於運算符重載,下列表述中正確的是(  )。

2016計算機二級《C++》選擇題練習與解析

A.c++已有的任何運算符都可以重載

B.運算符函數的返回類型不能聲明爲基本數據類型

C.在類型轉換符函數的定義中不需要聲明返回類型

D.可以通過運算符重載來創建c++中原來沒有的運算符

參考答案:C

參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案爲c。

2在類的定義中,用於爲對象分配內存空間,對類的數據成員進行初始化並執行其他內部管理操作的函數是( )。

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

參考答案:C

參考解析:構造函數在創建對象時系統自動調用,其功能是使用給定的值將對象初始化。

3軟件設計中模塊劃分應遵循的準則是( )。

A.低內聚低耦合

B.高內聚低耦合

C.低內聚高耦合

D.高內聚高耦合

參考答案:B

參考解析:軟件沒計中模塊劃分應遵循的準則是高內聚低偶合、模塊大小規模適當、模塊的依賴關係適當等。模塊的劃分應遵循一定的要求,以保證模塊劃分合理,並進一步保證以此爲依據開發出的軟件系統可靠性強,易於理解和維護。模塊之間的耦合應儘可能的低,模塊的內聚度應盡町能的高。

4如果類A被說明成類B的友元,則( )。

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

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

C.類A的成員函數不得訪問類B的成員

D.類B不一定是類A的友元

參考答案:D

參考解析:本題考查的是友元類的定義:類A爲類B的友元類,則類A的所有成員函數都是類8的友元函數,但反之則不一定成立。

5有如下類定義:

class Foo

{

public:

Foo(int v):value(V){}//①

~Foo(){}//②

private:

Foo(){}//③

int value=0://④

};

其中存在語法錯誤的行是(  )。

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

參考答案:D

參考解析:本題考查對象的初始化,類的數據成員是不能在聲明類時初始化的,所以本題答案爲D。

6下面關於數組的描述錯誤的是( )。

A.在C++語言中數組的名字就是指向該數組第一個元素的指針

B.長度爲n的數組,下標的範圍是0~n-1

C.數組的大小必須在編譯時確定

D.數組只能通過值參數和引用參數兩種方式傳遞給函數

參考答案:D

參考解析:本題考查的是數組的基本使用,數組還可以通過對應的指針調用傳遞參數,其餘選項的說法都是正確的。

7運算符重載是對已有的運算符賦予多重含義,因此( )。

A.可以對基本類型(如int類型)的數據,重新定義“+”運算符的含義

B.可以改變一個已有運算符的優先級和操作數個數

C.只能重載c++中已經有的運算符,不能定義新運算符

D.C++中已經有的所有運算符都可以重載

參考答案:C

參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案爲c。

8有如下類和對象的定義:

class Constants{

public:

static double getPI(){return 3.1416;}

};

Constants constants:

下列各組語句中,能輸出3.1416的是( )。

參考答案:D

參考解析:本題考查靜態成員函數。靜態成員函數由於沒有this指針,所以不能訪問本類中的非靜態成員。引用靜態成員函數有2種方式,一種是直接使用類來引用,即Constants::getpI();另一種是使用對象來引用,即I()。所以本題答案爲D。

9程序流程圖中帶有箭頭的線段表示的是( )。

A.圖元關係B.數據流C.控制流D.調用關係

參考答案:C

參考解析:在數據流圖中,用標有名字的箭頭表示數據流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C。

10下列程序的執行結果爲( )。

#include

void main()

{

int a=3,b=0;

int*P =&a;

b=+a++;

cout<<*P<<”,”<

}

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

參考答案:B

參考解析:*P爲所指對象a的值,語句“b=+a++;”等價於“b=b+a;a=a+1;”。

11對長度爲n的線性表排序,在最壞情況下,比較次數不是n(rt一1)/2的排序方法是( )。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

參考答案:D

參考解析:除了堆排序算法的比較次數是0(nlog2n),其他的都是n(n—1)/2。

12字面常量42、4.2、42L的數據類型分別是(  )。

,double、int

9、float、int

、double、long

、float、long

參考答案:C

參考解析:本題考查整型變量的類型和浮點變量的類型,42默認爲int型數據,42後面加上L後,表示long型數據,4.2默認爲double型數據。

13下列敘述中正確的是(  )。

A.棧是“先進先出”的線性表

B.隊列是“先進後出”的線性表

C.循環隊列是非線性結構

D.有序線性表既可以採用順序存儲結構,也可以採用鏈式存儲結構

參考答案:D

參考解析:棧是先進後出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環隊列是線性結構的線性表,所以C錯誤。

14不能作爲重載函數的調用的依據是(  )。

A.參數個數B.參數類型C.函數類型D.函數名稱

參考答案:D

參考解析:所謂重載函數是指同一個函數名可以對應多個函數的實現,編譯器會根據參數個數、參數類型和函數返回值類型不同而自動調用相應的函數。

15下列語句中,錯誤的是(  )。

t int buffer=256;t double*point; const buffer=256;le*eonst point:

參考答案:D

參考解析:const是一個C++關鍵字,用於限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案爲D。

16下列運算符中,在c++語言中不能重載的是( )。

A.*B.>=C.::D./

參考答案:C

參考解析:不能被重載的運算符還包括:“.”、“.*”、“->*”和“?:”。

17有如下說明:

int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數值爲9的表達式是( )。

A.*P+9B.木(P+8)C.*P+=9D.P+8

參考答案:B

參考解析:本題考查指向數組的指針,本題中指針變量P指向數組a,那麼*P的值就是1,即表示數組的第一個元素,那麼數值爲9的表達式就是將指針向後移動8個地址,即P+8指向的是數組元素值爲9,所以數值爲9的表達式是*(P+8)。

18執行下列語句段後,輸出字符“*”的個數是( )。

for(int i=50;i>1;i-=2)Cout<<'*':

A.24B.25C.26D.50

參考答案:B

參考解析:本題考查for循環語句,題目中每執行完循環體後,i都會減2.那麼只有50到2之間的偶數才能輸出“*”,所以總共輸出25次。

19算法的有窮性是指( )。

A.算法程序的運行時間是有限的

B.算法程序所處理的數據量是有限的

C.算法程序的長度是有限的

D.算法只能被有限的用戶使用

參考答案:A

參考解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。有窮性是指算法程序的運行時間是有限的。

20下面關於break語句的描述中,不正確的是( )。

k可以用於循環體內

k語句可以在for循環語句中出現多次

k語句可以在switch語句中出現多次

k語句可用於if條件判斷語句內

參考答案:D

參考解析:本題考查的是break語句的使用,break可以結束switch語句和for循環語句,但是不能使用在條件判斷語句內。