當前位置:才華齋>計算機>計算機二級>

計算機二級C++語言筆試試卷及答案

計算機二級 閱讀(1.37W)
計算機二級C++語言筆試試卷及答案
  本文是2016年全國計算機等級考試二級C++語言的筆試試卷,希望對各位考生有一定的幫助!
  一、選擇題((1)~(35)每小題2分,共70分)
  下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。
  (1)下列選項中不符合良好程式設計風格的是
  A)源程式要文件化 B)資料說明的次序要規範化
  C)避免濫用goto語句 D)模組設計要保證高耦合、高內聚
  (2)從工程管理角度,軟體設計一般分為兩步完成,它們是
  A)概要設計與詳細設計 B)資料設計與介面設計
  C)軟體結構設計與資料設計 D)過程設計與資料設計
  (3)下列選項中不屬於軟體生命週期開發階段任務的是
  A)軟體測試 B)概要設計 C)軟體維護 D)詳細設計
  (4)在資料庫系統中,使用者所見的資料模式為
  A)概念模式 B)外模式 C)內模式 D)物理模式
  (5)資料庫設計的四個階段是:需求分析、概念設計、邏輯設計和
  A)編碼設計 B)測試階段 C)執行階段 D)物理設計
  (6)設有如下三個關係表
RST
ABCABC
m13m13
nn13
  下列操作中正確的是
  A)T=R∩S B)T=R∪S
  C)T=R×S D)T=R/S
  (7)下列敘述中正確的是
  A)一個演算法的空間複雜度大,則其時間複雜度也必定大
  B)一個演算法的空間複雜度大,則其時間複雜度必定小
  C)一個演算法的時間複雜度大,則其空間複雜度必定小
  D)上述三種說法都不對
  (8)在長度為64的有序線性表中進行順序查詢,最壞情況下需要比較的次數為
  A)63 B)64 C)6 D)7
  (9)資料庫技術的根本目標是要解決資料的
  A)儲存問題 B)共享問題 C)安全問題 D)保護問題
  (10)對下列二叉樹
  進行中序遍歷的結果是
  A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG
  (11)下列有關行內函數的敘述中,正確的是
  A)行內函數在呼叫時發生控制轉移
  B)行內函數必須通過關鍵字inline來定義
  C)行內函數是通過編譯器來實現的
  D)行內函數函式體的最後一條語句必須是return語句
  (12)下列情況中,不會呼叫拷貝建構函式的是
  A)用一個物件去初始化同一類的另一個新物件時
  B)將類的一個物件賦值給該類的另一個物件時
  C)函式的形參是類的物件,呼叫函式進行形參和實參結合時
  D)函式的返回值是類的物件,函式執行返回呼叫時
  (13)下列有關繼承和派生的敘述中,正確的是
  A)如果一個派生類私有繼承其基類,則該派生類物件不能訪問基類的保護成員
  B)派生類的成員函式可以訪問基類的所有成員
  C)基類物件可以賦值給派生類物件
  D)如果派生類沒有實現基類的一個純虛擬函式,則該派生類是一個抽象類
  (14)下列運算子不能過載為友元函式的是
  A)= () [ ] -> B)+ - ++ --
  C)> < >= <= D)+= -= *= /=
  (15)關於在呼叫模板函式時模板實參的使用,下列表述正確的是
  A)對於虛擬型別引數所對應的模板實參,如果能從模板函式的實參中獲得相同的資訊,則都可以省略
  B)對於虛擬型別引數所對應的模板實參,如果它們是引數表中的最後的若干個引數,則都可以省略
  C)對於虛擬型別引數所對應的模板實參,若能夠省略則必須省略
  D)對於常規引數所對應的模板實參,任何情況下都不能省略
  (16)下列關於輸入流類成員函式getline()的描述中,錯誤的是
  A)該函式是用來讀取鍵盤輸入的字串的
  B)該函式讀取的字串長度是受限制的
  C)該函式讀取字串時,遇到終止符便停止
  D)該函式讀取字串時,可以包含空格
  (17)下列符號中,正確的C++識別符號是
  A)enum B)2b C)foo-9 D)_32
  (18)下列語句中,錯誤的是
  A)const int buffer=256; B)const double *point;
  C)int const buffer=256; D)double * const point;
  (19)if語句的語法格式可描述為:
  格式1:if(<條件>) <語句>
  或
  格式2:if(<條件>) <語句1> else <語句2>
  關於上面的語法格式,下列表述中錯誤的是
  A)<條件>部分可以是一個if語句,例如if(if(a==0) …) …
  B)<語句>部分可以是一個if語句,例如if(…) if(…) …
  C)如果在<條件>前加上邏輯非運算子!並交換 <語句1> 和 <語句2> 的位置,語句功能不變
  D)<語句>部分可以是一個迴圈語句,例如if(…) while(…) …
  (20)有如下說明
  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
  則數值為9的表示式是
  A)*p+9 B)*(p+8) C)*p+=9 D)p+8
  (21)若有下面的函式呼叫:
  fun(a+b, 3, max(n-1, b))
  則fun的實參個數是
  A)3 B)4 C)5 D)6
  (22)以下關鍵字不能用來宣告類的訪問許可權的是
  A)public B)static C)protected D)private
  (23)在公有繼承的情況下,允許派生類直接訪問的基類成員包括
  A)公有成員 B)公有成員和保護成員
  C)公有成員、保護成員和私有成員 D)保護成員
  (24)關於運算子過載,下列表述中正確的是
  A)C++已有的任何運算子都可以過載
  B)運算子函式的返回型別不能宣告為基本資料型別
  C)在型別轉換符函式的定義中不需要宣告返回型別
  D)可以通過運算子過載來建立C++中原來沒有的'運算子
  (25)關於關鍵字class和typename,下列表述中正確的是
  A)程式中的typename都可以替換為class
  B)程式中的class都可以替換為typename
  C)在模板形參表中只能用typename來宣告引數的型別
  D)在模板形參表中只能用class或typename來宣告引數的型別
  (26)有如下程式
  #include
  #include
  using namespace std;
  int main( ){
  cout< cout<<12.345<<___________<<34.567;
  return 0;
  }
  若程式的輸出是:
  **12.345**34.567
  則程式中下劃線處遺漏的操作符是
  A)setprecision(3) B)fixed C)setfill('*') D)setw(8)
  (27)有如下程式
  #include
  #include
  using namespace std;
  class MyClass{
  public:
  MyClass( ){ cout<<'A'; }
  MyClass(char c){ cout< ~MyClass( ){ cout<<'B'; }
  };
  int main( ){
  MyClass p1,*p2;
  p2=new MyClass('X');
  delete p2 ;
  return 0;
  }
  執行這個程式螢幕上將顯示輸出
  A)ABX B)ABXB C)AXB D)AXBB
  (28)有如下程式
  #include
  using namespace std;
  int i=1;
  class Fun{
  public:
  static int i;
  int value( ){ return i-1;}
  int value( )const{ return i+1;}
  };
  int Fun::i=2;
  int main( ){
  int i=3;
  Fun fun1;
  const Fun fun2;
  ____________
  return 0;
  }
  若程式的輸出結果是:
  123
  則程式中下劃線處遺漏的語句是
  A)cout<
  B)cout<
  C)cout<
  D)cout<
  (29)有如下程式:
  #include
  using namespace std;
  class Obj{
  static int i;
  public:
  Obj( ){ i++; }
  ~Obj( ){ i--; }
  static int getVal( ){ return i;}
  };
  int Obj::i=0;
  void f(){Obj ob2; cout
  Obj ob1;
  f( );
  Obj *ob3=new Obj; cout
  delete ob3; cout< return 0;
  }
  程式的輸出結果是
  A)232 B)231 C)222 D)221
  (30)有如下程式
  #include
  using namespace std;
  class Base {
  protected:
  Base( ){ cout<<'A'; }
  Base(char c){ cout<};
  class Derived: public Base{
  public:
  Derived( char c ){ cout<};
  int main( ){
  Derived d1('B');
  return 0;
  }
  執行這個程式螢幕上將顯示輸出
  A)B B)BA C)AB D)BB
  (31)有如下類定義:
  class MyBase{
  int k;
  public:
  MyBase(int n=0):k(n){ }
  int value( )const{ return k;}
  };
  class MyDerived: MyBase{
  int j;
  public:
  MyDerived(int i): j(i) {}
  int getK( )const{ return k; }
  int getJ( )const{ return j; }
  };
  編譯時發現有一處語法錯誤,對這個錯誤最準確的描述是