C++設計成直接的和廣泛的支援多種程式設計風格(程式化程式設計、資料抽象化、物件導向程式設計、泛型程式設計)。下面是關於全國計算機二級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;