【計算機二級C++】題目與C++知識自檢

UnderTurrets發表於2024-08-15

@

目錄
  • 公共基礎知識
    • 計算機基礎
    • 資料庫
  • 資料結構
    • 連結串列
    • 排序
    • 佇列
  • C++
    • const與static
    • 指標
    • 函式
    • 過載
    • 構造與析構
    • 多型、繼承、許可權
    • 資料型別
    • 輸入輸出流
    • 模板


公共基礎知識

計算機基礎

  1. 計算機完成一條指令所花費的時間稱為指令週期

  2. 順序程式不具有併發性

  3. 下列敘述中正確的是C

    • A. 演算法的複雜度與問題的規模無關
    • B.演算法的最佳化主要透過程式的編制技巧來實現
    • C.對資料進行壓縮儲存會降低演算法的空間複雜度
    • D.數值型演算法只需要考慮計算結果的可靠性
  4. 結構化程式設計強調程式的易讀性

  5. 要使用外儲存器中的資訊,應先將其調入A

    • A.記憶體儲器
    • B.控制器
    • C.運算器
    • D.微處理器
  6. 程序是D

    • A.存放在記憶體中的程式
    • B.與程式等效的概念
    • C.一個系統軟體
    • D.程式的執行過程
  7. 結構化程式的三種基本控制結構是C

    • A.遞迴、堆疊、佇列
    • B.呼叫、返回、轉移
    • C.順序、選擇、重複
    • D.過程、子函式、函式
  8. 理論上計算機虛擬記憶體的最大容量取決於計算機地址位數

  9. 整數在計算機中儲存和運算通常採用的格式是補碼

  10. 在作業系統中,將檔名轉換為檔案儲存地址的結構是檔案目錄

  11. 軟體工程的三要素是方法、工具、過程

  12. I/O方式中使計算機系統並行工作程度最高的是D

    • A.DMA
    • B.程式查詢
    • C.程式中斷
    • D.通道
  13. 不屬於結構化程式設計原則的是多型性

  14. 程序具有多種屬性,併發性之外的另一重要屬性是動態性

  15. CPU晶片內部連線各元件的匯流排是D

    • A.系統匯流排
    • B.外圍匯流排
    • C.外部匯流排
    • D.內部匯流排
  16. 如果一個程序在執行時因某種原因暫停,該程序將脫離執行狀態進入C

    • A.靜止狀態
    • B.停止狀態
    • C.阻塞狀態
    • D.就緒狀態
  17. 下列敘述中正確的是A

    • A.程序控制塊PCB是程序存在的惟一標誌
    • B.程序建立完成後即進入執行狀態
    • C.處於就緒狀態的程序只能有一個
    • D.處於執行狀態的程序當執行時間片用完後將轉換為阻塞狀態
  18. 在軟體設計階段不使用A

    • A.DFD圖(資料流程圖)
    • B.PAD圖
    • C.程式流程圖
    • D.判定表
  19. 下列敘述中正確的是A

    • A.處於阻塞狀態的程序,當阻塞原因解除後即進入就緒狀態
    • B.程序一旦建立即進入執行狀態
    • C.程序在執行狀態下,如果時間片用完即終止
    • D.程序在就緒狀態下,如果時間片用完即終止
    • 解析:處於等待(阻寒)狀態的程序,如果它等待的事件已經發生,即條件得到滿足,就轉為就緒狀態。程序建立完成後會進入就緒狀態;處於執行狀態的程序,分配給它的時間片用完,就讓出CPU而轉為就緒狀態:處於就緒狀態的程序,一旦分配到CPU,就轉化為執行狀態。
  20. 下面屬於黑盒測試方法的是D

    • A.條件覆蓋
    • B.基本路徑測試
    • C.判定覆蓋
    • D.錯誤推測法
    • 解析:黑盒測試的主要技術有等價類劃分法、邊界值分析法、錯誤推測法和因果圖等。白盒測試的主要技術有邏輯覆蓋測試、基本路徑測試,其中邏輯覆蓋測試包括語句覆蓋、路徑覆蓋、判定覆蓋、條件覆蓋、判斷-條件覆蓋。
  21. 下列敘述中正確的是A

    • A.在CPU執行一條指令的過程中至少佔用一個機器週期
    • B.在CPU執行一條指令的過程中只需要佔用一個機器週期
    • C.在CPU執行一條指令的過程中至少佔用二個機器週期
    • D.在CPU執行一條指令的過程中只需要佔用一個機器週期
  22. 機器週期的同步標準是B

    • A.CPU執行指令所佔用的時間
    • B.CPU訪問儲存器一次所需要的時間
    • C.CPU分析指令所需要的時間
    • D.CPU訪問暫存器一次所需要的時間

資料庫

  1. 在資料庫管理技術發展的三個階段中,沒有專門的軟體對資料進行管理的是人工管理階段

  2. 建立表示學生選修課陳活動的實體聯絡模型,其中的兩個實體分別是C

    • A.學生和學號
    • B.課程和成績
    • C.學生和課程
    • D.課程和課程號
    • 解析:‘“學號”、“成績”是“學生”的屬性,“課程號”是“課程”的屬性
  3. 資料庫管理系統的基本功能不包括資料庫和網路中其他系統的通訊

  4. 關聯式資料庫規範化的目的是為了解決關聯式資料庫中的插入、刪除異常及資料冗餘問題

  5. 不屬於物件構成成分的是D

    • A.標識
    • B.屬性
    • C.方法(或操作)
    • D.規則
  6. 如果定義班級關係如下:班級(班級號,總人數,所屬學院,班級學生),則使它不滿足第一正規化的屬性是D

    • A.所屬學院
    • B.班級號
    • C.總人數
    • D.班級學生
    • 解析:對於關係模式,若其中的每個屬性都已經不能再分為簡單項,則它屬於第一正規化。本題中,在關係模式“班級”中,屬性“班級學生”又可以分為“學生學號”和“學生姓名”等,因此不滿足第一正規化。
  7. 下面模型中為概念模型的是D

    • A.層次模型
    • B.關係模型
    • C.網狀模型
    • D.實體-聯絡模型
    • 解析:最著名的概念模型有實體-聯絡模型和麵向物件模型。
  8. 圖書館管理系統中實體圖書和實體借閱人之間的聯絡是B

    • A.N:1
    • B.M:N
    • C.1;1
    • D.1:N
    • 解析:在圖書館管理系統中,一本圖書可以被多名借閱人借閱,一名借閱人也可以借多本圖書,則圖書和借閱人之間的聯絡是多對多,即M:N。
  9. 定義學生選修課程的關係模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學號、姓名、課程號、課程名、成績、學分),則關係最高是B

    • A.2NF
    • B.1NF
    • C.3NF
    • D.BCNF
    • 解析:滿足最低要求的叫第一正規化,簡稱1NF。在滿足第一正規化的甚礎上,進一步滿足更多要求規範則是第二正規化。然後在滿足第二正規化的甚礎上,還可以再滿足第三正規化,以此類推。
      第一正規化(1NF):主屬性(主鍵)不為空且不重複,欄位不可再分。
      第二正規化(2NF):如果關係模式是第一正規化,每個非主屬性都沒有對主鍵的部分依賴。
      第三正規化(3NF):如果關係模式是第二正規化,沒有非主屬性對主鍵的傳遞依賴。
      BCNF正規化:所有屬性都不傳遞依賴於關係的任何候選鍵。
      本題中關係模式SC的主鍵為(S#,C#),但“學號”就可以決定"姓名”,"課程號”就可以決定"課程名”,這裡有非主屬性對主鍵的部分依賴,不滿足第二正規化。關係SC最高是1NF。
  10. 關係資料模型的三個組成部分中不包括A

    • A.關係的併發控制
    • B.關係的資料操縱
    • C.關係的資料結構
    • D.關係的完整性約束
  11. 資料庫概念設計階段得到的結果是C

    • A.關係模型
    • B.資料字典
    • C.E-R模型
    • D.物理模型
  12. 在關聯式資料庫中,描述全域性資料邏輯結構的是C

    • A.內模式
    • B.使用者模式
    • C.概念模式
    • D.物理模式
  13. 將實體-聯絡模型轉換為關係模型時,實體之間多對多聯絡在關係模型中的實現方式是A

    • A.建立新的關係
    • B.建立新的屬性
    • C.增加新的關鍵字
    • D.建立新的實體
  14. 將資料庫的結構劃分成多個層次,是為了提高資料庫的邏輯獨立性和B

    • A.安全性
    • B.物理獨立性
    • C.操作獨立性
    • D.管理規範性
  15. 用樹型結構表示實體之間聯絡的模型是A

    • A.層次模型
    • B.關係模型
    • C.網狀模型
    • D.運算模型
    • 解析:用網狀結構表示實體及其之間聯絡的模型稱為網狀模型,關係模型則採用二維表來表示關係。
  16. 規範化主要為克服資料庫邏輯結構中的插入異常,刪除異常以及A

    • A.冗餘度大的問題
    • B.結構不合理的問題
    • C.資料不一致的問題
    • D.資料丟失的問題
  17. 學生和課程的關係模式定義為
    S(S#,Sn,Sd,Dc,S)(其屬性分別為學號、姓名、所在系、所在系的系主任、年齡);
    C(C#,Cn,P#)(其屬性分別為課程號、課程名、先選課);
    SC(S#,C#,G)(其屬性分別學號、課程號和成績)。
    關係中包含對主屬性傳遞依賴的是B

    • A.S#→Sd
    • B.S#→Sd,Sd→Dc
    • C.S#→Sd,(S#,C#)→G
    • D.C#→P#,(S#,C#)→G
    • 解析:在關係模式中,如果Y→X,X→A,且X不決定Y,A不屬於X,那麼Y→A是傳遞依賴。在關係模式S中,S#→Sd,Sd→Dc,且Sd不決定S#,DC不屬於Sd,那麼S#→Dc是傳遞依賴。

資料結構

  1. 設某棵樹的度為3,其中度為3,2,1的結點個數分別為3,0,4。則該樹中葉子結點的個數為7
    • 解析:葉子節點就是度為0的結點,假設共有n個葉子節點。接下來計算樹的所有結點的個數,可以列出方程:

$$
3\times 3+2 \times 0 + 1 \times 4 +0 \times n +1=3+4+n
$$

  1. 在具有2n個結點的完全二叉樹中,葉子結點的個數為n

  2. 某二叉樹具有12個結點,其中只有1個葉子結點。則該二叉樹的深度為D

    • A.3
    • B.6
    • C.8
    • D.12
    • 解析:對任何一棵二叉樹,度為0的結點(即葉子結點)總是比度為2的結點多一個。本題中,葉子結點 個數為1,則度為2的結點個數為0,所以有11個度為1的結點,所以深度為12

連結串列

  1. 在長度為n的有序連結串列中進行查詢,最壞情況下需要比較的次數為n

  2. 下列敘述中正確的是A

    • A.在棧中,棧頂指標的動態變化決定棧中元素的個數
    • B.在迴圈佇列中,隊尾指標的動態變化決定佇列的長度
    • C.在迴圈連結串列中,頭指標和鏈尾指標的動態變化決定連結串列的長度
    • D.線上性連結串列中,頭指標和鏈民指標的動態變化決定連結串列的長度
    • 解析:在棧中,棧頂指標動態反映了棧中元素的變化情況,A選項敘述正確。在迴圈佇列中,隊尾指標和隊頭指標的動態變化決定佇列的長度,B選項敘述錯誤。在鏈式儲存結構中,無論是迴圈連結串列還是線性連結串列,插入和移除元素時,只需要改變相應位置的結點指標即可,頭指標和尾指標無法確定連結串列的長度,C、D選項敘述錯誤。

排序

  1. 對長度為8的陣列進行快速排序,最多需要的比較次數為28

    • 解析:對長度為的線性表進行快速排序,最壞情況下需要比較的次數為(n-1)/2。陣列屬於線性表,故對長度為8的陣列進行快速排序,最多需要的比較次數為8(8-1)/2=28。
  2. 在快速排序法中,每經過一次資料交換(或移動)後能消除多個逆序

  3. 設順序表的長度為16,對該表進行簡單插入排序。在最壞情況下需要比較的次數是120

    • 解析:對長度為n的線性表進行簡單插入排序,最壞情況下需要比較的次數為n(n-1)/2。

佇列

  1. 下列關於迴圈佇列敘述正確的是A

    • A.迴圈佇列是佇列的一種順序儲存結構
    • B.迴圈佇列是佇列的一種鏈式儲存結構
    • C.迴圈佇列中的隊尾指標一定大於隊頭指標
    • D.迴圈佇列中的隊尾指標一定小於隊頭指標
  2. 迴圈佇列的儲存空間為Q(1:50),初始狀態為空。經過一系列正常的入隊與退隊操作後,front=24,rear=25。此時該迴圈佇列中的元素個數為1

    • 解析:若迴圈佇列的儲存空間為(1:m),在迴圈佇列運轉起來後,如果front<rear,則佇列中的元素個數為rear-front。如果front>rear,則佇列中的元素個數為rear-front+m。
  3. 迴圈佇列的儲存空間為Q(1:50)。經過一系列正常的入隊與退隊操作後,front=rear=25。後又成功地將一個元素入隊,此時佇列中的元素個數為1

    • 設迴圈佇列的儲存空間為Q(1:m),當front=rear=m時,迴圈佇列為空:當front=rear且不等於m時,迴圈佇列可能為空,也可能為滿。當為空時,可以插入元素:當為滿時,插入元素會發生"上溢”錯誤。題目中已經說明“成功地將一個元素入隊”,說明之前迴圈佇列的狀態為空,插入一個元素後,佇列中共有1個元素。
  4. 某帶鏈的佇列初始狀態為front=rear=NULL。經過一系列正常的入隊與退隊操作後,front=10,rear=5。該佇列中的元素個數為D

    • A.4
    • B.5
    • C.6
    • D.不確定

  1. 設棧的儲存空間為S(1:50),初始狀態為top=51。現經過一系列正常的入棧和出棧後,top=50,則棧中元素個數為1

    • 棧的儲存空間為S(1:50),初始狀態為top=51,即棧的初始狀態為空。當第一個元素進棧後,top=50,第二個元素進棧後,top=49,第三個元素進棧後,top=48,以此類推;若第三個元素出棧後,top=48,第二個元素出棧後,top=50。即每進棧一個元素,top-1;每出棧一個元素,top+1。當top=50時,棧中只有一個元素。
  2. 帶鏈棧(佇列)空的條件是D

    • A.top=bottom=-1
    • B.top=-1且bottom=NULL
    • C.top=NULL且bottom=-1
    • D.top=bottom=NULL
    • 解析:帶鏈的棧是具有棧屬性的連結串列。線性連結串列的儲存單元是不連續的。因為是不連續的儲存空間,所以指標將不會有規律地連續變化。當top=bottom=NULL時,棧為空:當top=bottom且不等於NULL時,棧中存在一個元素,其他情況無法判斷。

C++

const與static

  1. 下列語句中錯誤的是B

    • A.const int buffer=256;
    • B.const int temp;
    • C.const double *p;
    • D.const double *rt=new double(5.5);
  2. 由於常物件不能被更新,因此A

    • A.透過常物件只能呼叫它的常成員函式
    • B.透過常物件只能呼叫靜態成員函式
    • C.常物件的成員都是常成員
    • D.透過常物件可以呼叫任何不改變物件值的成員函式
  3. 下列關於虛擬函式的說明中,正確的是B

    • A.從虛基類繼承的函式都是虛擬函式
    • B.虛擬函式不得是靜態成員函式
    • C.只能透過指標或者引用來呼叫虛擬函式
    • D.抽象類中的成員函式都是虛擬函式
  4. 有如下的類的定義:

class Test{
	public:
		Test(){
			a=0;c=0;
		}//A
		int f(int a) const {
			this->a=a
		}//B
		static int g() {return a;}//C
		void h(int b){Test::b=b}//D
};

能被正確編譯的語句是D

  1. 下列語句中,錯誤的是D
    • A.const int buffer=256;
    • B.const double * point;
    • C.int const buffer =256;
    • D.double * const point;
    • 解析:D為指標常量,即不能修改所指向內容的指標,必須初始化

指標

  1. 有如下程式:
#include <iostream>
using namespace std;
int main(){
	int *p;
	*p=9;
	cout<<"The value at p:"<<*p;
	return 0;
}

編譯執行程式將出現的情況是D

  • A.編譯時出現語法錯誤,不能生成可執行檔案
  • B.執行時一定輸出:The value at p:9
  • C.執行時一定輸出:The value at p:*9
  • D.執行有可能出錯
  1. 下列關於this指標的描述中,正確的是D

    • A.類的成員函式都有this指標
    • B.類的友元函式都有this指標
    • C.任何與類相關的函式都有this指標
    • D.類的非靜態成員函式都有this指標
  2. 已知有陣列定義:

char a[3][4];

下列表示式中錯誤的是A

  • A.a[0]="AAA"
  • B.strcpy(a[1],"BBB")
  • C.a[2][3]='C'
  • D.a[1][1]=a[2][2]
  • 解析:在C++中,陣列是不能被賦值的,所以程式碼中的 a[0]=str1; 是錯誤的。如果你想將 str1 的值複製到 a[0] 中,可以使用字串庫函式 strcpy。

函式

  1. 下列關於C++函式的說明中,正確的是C

    • A.行內函數就是定義在另一個函式體內部的函式
    • B.函式體的最後一條語句必須是return語句
    • C.標準C++要求在呼叫一個函式之前,必須先宣告其原型
    • D.編譯器會根據函式的返回值型別和參數列來區分函式的不同過載形式
  2. 下列有關行內函數的敘述中,正確的是C

    • A.行內函數在呼叫時發生控制轉移
    • B.行內函數必須透過關鍵字inline定義
    • C.行內函數是透過編譯器來實現的
    • D.行內函數的函式體的最後一條語句必須是return語句
  3. 下列說法正確的是B

    • A.行內函數在執行時是將該函式的目的碼插入每個呼叫該函式的地方
    • B.行內函數在編譯時是將該函式的目的碼插入每個呼叫該函式的地方
    • C.類的行內函數必須在類體內定義
    • D.類的行內函數必須在類體外透過加關鍵字inline定義
  4. 下面對於友元函式描述正確的是C

    • A.友元函式的實現必須在類的內部定義
    • B.友元函式是類的成員函式
    • C.友元函式破壞了類的封裝性和隱藏性
    • D.友元函式不能訪問類的私有成員
  5. 關於函式宣告格式中的<返回型別>,下列敘述錯誤的是A

    • A.<返回型別>有可能包含關鍵字true
    • B.<返回型別>有可能包含自定義識別符號
    • C.<返回型別>有可能包含字元*
    • D.<返回型別>有可能包含關鍵字float

過載

  1. 運算子過載是對已有的運算子賦予多重含義,因此C

    • A.可以對基本型別(如int型別)的資料,重新定義“+”運算子的含義
    • B.可以改變一個已有運算子的優先順序和運算子個數
    • C.只能過載C++中已經有的運算子,不能定義新的運算子
    • D.C++中已經有的所有運算子都可以過載
  2. 下列運算子不能過載為友元函式的是A

    • A.= () [] ->
    • B.+ - ++ --
    • C.> < >= <=
    • D.+= -= *= /=
    • 解析:成員函式運算子過載時,運算子左值型別必須為所在類型別;而友元函式運算子過載則不必。 一般來說,對於雙目運算子,應當將其過載為友元函式,而對於單目運算子,則應將其過載為成員函式。 但這也不是絕對的:“=”、“ []”、“->”和“ ()”是必須過載為成員函式的;“<<”、“>>”是必須過載為友元函式的。
    • PS:若運算子過載為成員函式,那麼這個運算子的運算元上限等於其參數列的個數+1;若運算子過載為友元函式,那麼這個運算子的運算元上限等於其參數列的個數。
    • PS:過載運算子不能有預設引數
    • PS:不能過載的運算子有:..*::?:sizeof
  3. 透過運算子過載,可以改變運算子原有的A

    • A.運算元型別
    • B.運算元個數
    • C.優先順序
    • D.結合性
  4. 有如下的類的定義:

class Myclass{
	public:
	___________
	private:
		int data;
};

若要為Myclass類過載流輸入運算子">>",使得程式中可以"cin>>data;"的形式改變Myclass類的物件中資料成員data的值,則空缺處的宣告語句應該為A

  • A.friend istream& operator >> (istream& is, Myclass& a);
  • B.friend istream& operator >> (istream& is, Myclass a);
  • C.istream& operator >> (istream& is, Myclass& a);
  • D.istream& operator >> (istream& is, Myclass a);
  1. 對C++編譯器區分過載函式無任何意義的資訊是返回值型別

構造與析構

  1. 有如下的類的定義:
class Point{
	int xx,yy;
	public:
		Point():xx(0),yy(0){}
		Point(int x,int y):xx(x),yy(y){}
};

如果執行語句

Point a(2),b[3],*c[4]

則Point類的建構函式被呼叫的次數是4

  1. 下列情況中,不會呼叫複製建構函式的是B

    • A.用一個物件去初始化同一類的另一個新物件時
    • B.將類的一個物件賦值給該類的另一個物件時
    • C.函式的形參是類的物件,呼叫函式進行形參和實參結合時
    • D.函式的返回值是類的物件,函式執行返回撥用時
  2. 下列關於派生類建構函式和解構函式的說法中,錯誤的是D

    • A.派生類的建構函式會隱含呼叫基類的建構函式
    • B.如果基類中沒有預設建構函式,那麼派生類必須定義建構函式
    • C.在建立派生類物件時,先呼叫基類的建構函式,再呼叫派生類的建構函式
    • D.在銷燬派生類物件時,先呼叫基類的解構函式,再呼叫派生類的解構函式
  3. 對於一個類定義,下列敘述中錯誤的是B

    • A.如果沒有定義複製建構函式,編譯器將生成一個複製建構函式
    • B.如果沒有定義預設的建構函式,編譯器一定將生成一個預設的建構函式
    • C.如果沒有定義建構函式,編譯器將生成一個預設的建構函式和一個複製建構函式
    • D.如果已經定義了建構函式和複製建構函式,編譯器不會生成任何建構函式

多型、繼承、許可權

  1. 下列關於基類和派生類關係的敘述中,正確的是D

    • A.每個類最多隻能有一個直接基類
    • B.派生類中的成員可以訪問基類中的任何成員
    • C.基類的建構函式必須在派生類的建構函式體中呼叫
    • D.派生類除了繼承基類的成員,還可以定義新的成員
  2. 下列關於類定義的說法中,正確的是B

    • A.類定義中包括資料成員和函式成員的宣告
    • B.類成員的預設訪問許可權是保護的
    • C.資料成員必須被宣告為私有的
    • D.成員函式只能在類體外進行定義
  3. 如果派生類以protected方式繼承基類,則原基類的protected成員和oublic成員在派生類中的訪問屬性分別是D

    • A.public和public
    • B.public和protected
    • C.protected和public
    • D.protected和protected
  4. 下列有關繼承和派生的敘述中,正確的是C

    • A.派生類不能訪問基類的保護成員
    • B.作為虛基類的類不能被例項化
    • C.派生類應當向基類的建構函式傳遞引數
    • D.虛擬函式必須在派生類中重新實現
    • 解析:派生類可以訪問基類的保護成員,而不能訪問基類的私有成員。作為虛基類的類可以被例項化。虛擬函式如果沒有派生類中重新實現,那麼仍然使用基類的成員函式。
  5. 下列程式碼段中宣告瞭3個類:

class Person {};
class Student:public Person {};
class Undergraduate:Student{};

下列關於這些類之間關係的描述中,錯誤的是B

  • A.類Person是類Undergraduate的基類
  • B.類Undergraduate從類Student公有繼承
  • C.類Student是類Person的派生類
  • D.類Undergraduate是類Person的派生類
  • 解析:如果沒有指明哪種繼承方式,那麼預設為私有繼承。
  1. 下列有關類繼承的敘述中,錯誤的是D

    • A.繼承可以實現軟體複用
    • B.虛基類可以解決由多繼承產生的二義性問題
    • C.派生類建構函式要負責呼叫基類的建構函式
    • D.派生類沒有繼承基類的私有成員
    • 解析:3種繼承方式中,派生類繼承了基類的私有成員,但不能被直接訪問,可以透過派生類的友元函式去訪問基類的私有成員。
  2. 下列關於虛基類的描述,錯誤的是B

    • A.設定虛基類的目的是為了消除二義性
    • B.虛基類的建構函式在非虛基類之後呼叫
    • C.若同一層中包含多個虛基類,這些虛基類的建構函式按它們說明的次序呼叫
    • D.若虛甚類由非虛甚類派生而來,則仍然先呼叫基類建構函式,再呼叫派生類的建構函式
  3. 下列關於多型性的描述,錯誤的是C

    • A.C++語言中的多型性分為編譯時的多型性和執行時的多型性
    • B.編譯時的多型性可透過函式過載實現
    • C.執行時的多型性可透過模板和虛擬函式實現
    • D.實現執行時多型性的機制稱為動態繫結
    • 編譯時的多型性是透過函式過載和模板體實現的,執行時的多型性是透過虛擬函式體實現的。
  4. 下列關於繼承和派生的敘述中,正確的是D

    • A.派生類中新定義的成員函式可以訪問基類的所有成員
    • B.在私有繼承的情況下,派生類中新定義的成員函式不能訪問基類的保護成員
    • C.基類對像可以賦值給派生類物件
    • D.如果派生類沒有實現基類的一個純虛擬函式,則該派生類是一個抽象類

資料型別

  1. 下列各組型別宣告符中,含義相同的一組是B
    • A.unsigned long int 和 long
    • B.signed short int 和 short
    • C.unsigned short 和 short
    • D.short int 和 int

輸入輸出流

  1. 下列關於C++預定義流物件的敘述中,正確的是A

    • A.cin是C++預定義的標準輸入流物件
    • B.cin是C++預定義的標準輸入流類
    • C.cout是C++預定義的標準輸入流物件
    • D.cout是C++預定義的標準輸入流類
  2. 有如下語句序列:

char str[10];
cin>>str;

當從鍵盤輸入"I love this game"時,str中的字串是D

  • A."I love this game"
  • B."I love thi"
  • C."I love"
  • D."I"
  • 解析:cin是C++預定義的標準輸入流對像,cin用來接收字串時,遇“空格”、“TAB”、“回車”時都會結束。
  1. C++系統預定義了4個用於標準資料流的物件,下列選項中不屬於此類物件的是D

    • A.cout
    • B.cin
    • C.cerr
    • D.cset
    • 解析:C++標準資料流物件分別是cout、cin、cerr、clog
  2. 下列語句都是程式執行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是D

    • A.cout<<internal<<12345
    • B.cout<<left<<12345
    • C.cout<<right<<12345
    • D.cout<<setw(6)<<12345
    • 解析:A、B、C選項都會輸出"12345",D選項會輸出" 12345"

模板

  1. 下列有關模板的敘述中,正確的是B

    • A.函式模板不能含有常規形參
    • B.函式模板的一個例項就是一個函式定義
    • C.類别範本的成員函式不能是模板函式
    • D.用類别範本定義物件時,絕對不能省略模板實參
  2. 下列關於函式模板的敘述中,錯誤的是D

    • A.從模板實參表和從模板函式實參表獲得資訊矛盾時,以模板實參的資訊為準
    • B.對於常規引數所對應的模板實參,任何情況下都不能省略
    • C.虛擬型別引數沒有出現在模板函式的形參表中時,不能省略模板實參
    • D.模板實參表不能為空

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章