2017全國計算機二級c++檢測試題

學識都 人氣:2.56W

C++設計成直接的和廣泛的支持多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。下面是關於全國計算機二級c++檢測試題,希望大家認真閱讀!

2017全國計算機二級c++檢測試題

一。選擇題

1). 若已定義的函數有返回值,則以下關於該函數調用的敘述中錯誤的是( )。

A.函數調用可以作爲獨立的語句存在

B.函數調用可以無返回值

C.函數調用可以出現在表達式中

D.函數調用可以作爲、一個函數的形參

正確答案:D

答案解析:本題考查函數的調用方式。函數的形參和實參具有以下特點:①形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放分配的內存單元,因此,形參只有在函數內部有效,函數調用結束返回主調函數後則不能再使用該形參變量;②實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參,因此應通過預先用賦值、輸入等辦法使實參獲得確定值;③實參和形參在數量上、類型上、順序上應嚴格一致,否則會發生″類型不匹配″的錯誤;④函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

2). 對於語句″cout< < <1<< < <2;″的輸出結果是( )。

A.*********1*2

B.********12

C.*******1*2

D.12********

正確答案:A

答案解析:C++語言中,setfill的意思是在空格的地方填上setfill函數中的參數字符,setw的意思是設置整個輸出字符串的字符個數,本題中用*來代替空格。

3). 下列關於運算符重載不正確的是( )

A.運算符重載不能改變運算符的操作數個數

B.運算符重載不能改變運算符的優先級

C.運算符重載不能改變運算符的結合性

D.運算符重載能改變對預定義類型數據的`操作方式

正確答案:D

4). 通常拷貝構造函數的參數是

A.某個對象名

B.某個對象的成員名

C.某個對象的引用名

D.某個對象的指針名

正確答案:C

答案解析:拷貝初始化構造函數的作用是用一個已知的對象來初始化一個被創建的同類的對象,該函數只有一個參數,並且是對同類的某個對象的引用。

5). 下面關於模板的描述,錯誤的是

A.函數模板和類模板的參數可以是任意的數據類型

B.類模板不能直接使用,必須先實例化爲相應的模板類,然後定義了模板類的對象後才能使用

C.函數模板不能直接使用,需要實例化爲模板函數後才能使用

D.類模板的成員函數都是模板函數

正確答案:A

答案解析:類模板不能被重載,而函數模板可以,它們不能被未知的數據類型替換。

二、填空題

(1)下面程序的打印結果是 [1]

#incude

int f(int);

int main()

{  int i;

for(i=0;i<5;i++)

cout<

return0;

}

int f(int i)

{  static int k=1;

for(;i>0;i- -)

k + = i;

return k;

}

(2)在用class定義一個類時,數據成員和成員函數的默認訪問權限是 [2]

(3)含有純虛函數的類稱爲 [3]

(4)已知intDBL(int n){return n + n;}和longDBL(long n){return n

+n;}是一個函數模板的兩個實例,則該函數模板的定義是 [4]

(5)在下面程序的橫線處填上適當的語句,使該程序執行結果爲10.

#include

class MyClass

{  public:

MyClass(int a){x = a;}

[5] //取x值

private

int x;

};

int main()

{  MyClass my(10);

cout<

return 0;