全國計算機等級考試二級C++筆試真題
在各個領域,我們最熟悉的就是試題了,試題是參考者回顧所學知識和技能的重要參考資料。什么樣的試題才是好試題呢?以下是小編收集整理的全國計算機等級考試二級C++筆試真題,供大家參考借鑒,希望可以幫助到有需要的朋友。
一、單選題(每題2分,共20分)
1. 在C++中,用于輸入單個字符的流對象是( )
A. cin
B. cout
C. cerr
D. clog
答案:A。cin用于標準輸入,可輸入各種數據類型,包括單個字符。
2. 下面關于C++函數默認參數的描述中,正確的是( )
A. 函數默認參數只能有一個
B. 函數默認參數必須在函數定義時設置
C. 函數默認參數可以在函數聲明時設置
D. 函數默認參數的值必須是常量表達式
答案:C。函數默認參數可以在函數聲明時設置,也可以在函數定義時設置(如果在聲明和定義都設置,定義處不能再次指定默認值),默認參數可以有多個,其值可以是常量表達式或者具有默認構造函數的類型。
3. 若有定義:int a = 10; 則下列表達式的值為4的是( )
A. a / 3
B. a % 3
C. a >> 1
D. a << 2
答案:C。a = 10,10的二進制表示為1010,右移1位(a >> 1)后變為0101,十進制為5;左移2位(a << 2)后變為101000,十進制為40;10除以3等于3余1(a / 3 = 3,a % 3 = 1)。
4. 以下哪種數據類型不能用于定義數組的下標( )
A. int
B. char
C. float
D. enum類型
答案:C。數組下標必須是整數類型或者可以轉換為整數類型的表達式,float類型不能直接用作數組下標。
5. 在C++類中,靜態成員函數( )
A. 可以訪問類的非靜態成員
B. 不能訪問類的靜態成員
C. 只能通過類名來調用
D. 可以通過類的對象來調用
答案:D。靜態成員函數可以通過類的對象來調用,也可以通過類名調用,它不能訪問類的非靜態成員,但可以訪問類的靜態成員。
6. 若有以下函數模板定義:
template
T Max(T a, T b) {
return (a > b)? a : b;
}
當調用`Max(3.5, 2)`時,會發生( )
A. 編譯錯誤,因為模板參數類型不匹配
B. 編譯成功,自動將2轉換為double類型
C. 運行時錯誤
D. 以上都不對
答案:B。在函數模板調用時,會根據實參類型自動推導模板參數類型,這里會將2轉換為double類型以匹配3.5的類型。
7. 在C++中,打開一個文件并將文件指針定位到文件末尾的模式是( )
A. ios::in
B. ios::out
C. ios::ate
D. ios::app
答案:C。ios::ate模式打開文件并將文件指針定位到文件末尾;ios::in用于讀文件;ios::out用于寫文件;ios::app用于追加寫文件。
8. 以下關于C++中的引用說法正確的是( )
A. 引用必須在定義時初始化
B. 引用可以重新賦值,指向不同的對象
C. 引用是變量的別名,占用獨立的內存空間
D. 引用不能作為函數的返回值
答案:A。引用必須在定義時初始化,引用一旦初始化就不能再指向其他對象,引用不占用獨立的內存空間(和被引用對象共享內存),引用可以作為函數的返回值。
9. 若有類定義如下:
class A {
private:
int num;
public:
A(int n = 0) : num(n) {}
int getNum() const { return num; }
};
則以下對類A對象的操作中,合法的是( )
A.
A a;
a.num = 10;
B.
A a(5);
cout << a.getNum() << endl;
C.
A *p = new A;
*p.num = 20;
D.
A a;
const A &ra = a;
ra.num = 30;
答案:B。A選項中num是私有成員,不能在類外直接訪問;C選項中應該是(*p).num或者p->num;D選項中ra是常量引用,不能修改其成員。
10. 下面關于C++中構造函數的描述,錯誤的是( )
A. 構造函數可以重載
B. 構造函數可以有默認參數
C. 構造函數可以是虛函數
D. 構造函數名與類名相同
答案:C。構造函數不能是虛函數,虛函數是為了實現多態性,而構造函數是在對象創建時調用的特殊函數,不適合作為虛函數。
二、多選題(每題3分,共15分)
1. 以下哪些屬于C++中的基本數據類型( )
A. int
B. string
C. char
D. float
E. bool
答案:ACDE。int(整數類型)、char(字符類型)、float(單精度浮點類型)、bool(布爾類型)是基本數據類型,而string是C++標準庫中的類類型,不屬于基本數據類型。
2. 在C++中,關于動態內存分配的說法正確的是( )
A. 使用new關鍵字可以動態分配內存
B. 使用關鍵字釋放動態分配的單個對象的內存
C. 使用 []關鍵字釋放動態分配的數組內存
D. 動態分配的內存位于棧區
E. 動態分配內存失敗時會拋出異常
答案:ABCE。動態分配的內存位于堆區,而不是棧區;new用于動態分配內存,用于釋放單個對象的動態內存, []用于釋放數組的動態內存,在C++中動態分配內存失敗時(例如沒有足夠的內存)會拋出異常。
3. 以下關于C++類的繼承的描述中,正確的是( )
A. 繼承可以實現代碼的復用
B. 可以實現多繼承,即一個類可以繼承多個類
C. 派生類可以訪問基類的私有成員
D. 基類的構造函數不會被派生類繼承
E. 繼承關系是一種“is - a”關系
答案:ABDE。繼承可以實現代碼復用,C++支持多繼承,基類的構造函數不會被派生類繼承,繼承關系表示派生類“is - a”基類,派生類不能直接訪問基類的私有成員。
4. 在C++中,函數重載的判斷依據包括( )
A. 函數名
B. 函數的返回值類型
C. 函數的參數個數
D. 函數的參數類型
E. 函數的調用方式
答案:ACD。函數重載是指在同一作用域內,可以有一組具有相同函數名,不同參數個數或者不同參數類型的函數,函數的返回值類型和調用方式不是函數重載的判斷依據。
5. 對于C++中的流操作,以下哪些說法是正確的( )
A. cin和cout是預定義的流對象
B. 可以通過流操作符“<<”和“>>”進行輸入輸出操作
C. 可以對流對象進行格式化輸出設置
D. 流操作只能用于標準輸入輸出設備
E. 可以自定義流類
答案:ABCE。cin是標準輸入流對象,cout是標準輸出流對象,可以使用“<<”(輸出)和“>>”(輸入)流操作符進行輸入輸出操作,并且可以通過一些函數對流對象進行格式化輸出設置,還可以自定義流類,流操作不僅可以用于標準輸入輸出設備,也可以用于文件等其他設備。
三、判斷題(每題1分,共5分)
1. 在C++中,所有的函數都可以被其他函數調用。( )
答案:錯誤。例如私有成員函數只能在類的內部被調用,不能被類外的函數直接調用。
2. 數組名在作為函數參數傳遞時,會退化為指針。( )
答案:正確。在C++中,數組名作為函數參數傳遞時,會失去其數組的特性,退化為指向數組首元素的指針。
3. C++中的友元函數破壞了類的封裝性。( )
答案:正確。友元函數可以訪問類的私有成員,這在一定程度上破壞了類的封裝性。
4. 一個類的靜態數據成員只有一份,被所有該類的對象共享。( )
答案:正確。靜態數據成員屬于類,而不是屬于某個對象,所有該類的對象共享這一靜態數據成員。
5. 在C++中,模板實例化是在編譯時完成的。( )
答案:正確。模板實例化是在編譯階段根據模板參數生成具體的函數或類的過程。
【全國計算機等級考試二級C++筆試真題】相關文章:
2007年3月全國計算機等級考試二級C++筆試真題03-28
計算機等級考試二級C++筆試選擇題04-23
全國計算機二級考試C++真題09-20
2006年9月全國計算機等級考試二級access筆試真題03-29
全國英語等級考試二級真題及答案09-20
3月全國計算機等級考試二級VFP考試真題09-26