环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 计算机类 > 计算机等级考试 > 历年真题 >

2011年3月计算机等级考试二级C++笔试真题

2011-11-06 来源:互联网 作者:第一考试网

2011年3月计算机等级考试二级C++笔试真题

#

  一、选择题 #

  (1)下列关于栈叙述正确的是

#

  A)栈顶元素最先能被删除    

#

  B)栈顶元素最后才能被删除 #

  C)栈底元素永远不能被删除   #

  D)以上三种说法都不对 #

  (2)下列叙述中正确的是 #

  A)有一个以上根结点的数据结构不一定是非线性结构

#

  B)只有一个根结点的数据结构不一定是线性结构

#

  C)循环链表是非线性结构

#

  D)双向链表是非线性结构

#

  (3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层) #

  A)3          #

  B)4          #

  C)6          #

  D)7 #

  (4)在软件开发中,需求分析阶段产生的主要文档是 #

  A)软件集成测试计划         #

  B)软件详细设计说明书 #

  C)用户手册                 #

  D)软件需求规格说明书

#

  (5)结构化程序所要求的基本结构不包括 #

  A)顺序结构                 #

  B)GOTO跳转

#

  C)选择(分支)结构        

#

  D)重复(循环)结构

#

  (6)下面描述中错误的是

#

  A)系统总体结构图支持软件系统的详细设计

#

  B)软件设计是将软件需求转换为软件表示的过程 #

  C)数据结构与数据库设计是软件设计的任务之一

#

  D)PAD图是软件详细设计的表示工具

#

  (7)负责数据库中查询操作的数据库语言是

#

  A)数据定义语言 #

  B)数据管理语言

#

  C)数据操纵语言 #

  D)数据控制语言

#

  (8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

#

  A)1:1联系    #

  B)1:m联系 #

  C)m:1联系   

#

  D)m:n联系

#

  (9)有三个关系R、S和T如下:

#

#

  则由关系R和S得到关系T的操作是

#

#p#分页标题#e#

  A)自然连接  

#

  B)交         #

  C)除         

#

  D)并 #

  (10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是 #

  A)-369      

#

  B)369        #

  C)0.369      

#

  D)整数集合{1,2,3,4,5}

#

  (11)为了提高函数调用的实际运行速度,可以将较简单的函数定义为 #

  A)内联函数   #

  B)重载函数   #

  C)递归函数    #

  D)函数模板 #

  (12)若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为 #

  A)a         

#

  B)AA.a       #

  C)a()         #

  D)AA::a()

#

  (13)当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是

#

  A)任何       #

  B)公有或保护

#

  C)保护或私有 #

  D)私有

#

  (14)若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是 #

  A)Data+(Data);

#

  B)Data operator+(Data);

#

  C)Data+operator(Data);

#

  D)operator+(Data,Data); #

  (15)下列关于函数模板的描述中,正确的是

#

  A)函数模板是一个实例函数 #

  B)使用函数模板定义的函数没有返回类型 #

  C)函数模板的类型参数与函数的参数相同

#

  D)通过使用不同的类型参数,可以从函数模板得到不同的实例函数 #

  (16) C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是 #

  A)cout       #

  B)cin       

#

  C)cerr       #

  D)cset #

  (17)Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是 #

  A)cpp       

#

  B)exe        #

  C)obj         #

  D)lik #

  (18)字符串“a+b=12\n\t”的长度为

#

  A)12         #

  B)10         #

  C)8          #p#分页标题#e#

#

  D)6 #

  (19)有如下程序: #

  #include #

  using namespace std;

#

  int main(){

#

  int f,f1=0,f2=1;

#

  for(int i=3;i<=6;i++){

#

  f=f1+f2; #

  f1=f2;f2=f; #

  }

#

  cout<  return 0; #

  } #

  运行时的输出结果是 #

  A)2          #

  B)3         

#

  C)5           #

  D)8

#

   (20)有如下程序:

#

  #include

#

  using namespace std;

#

  int main(){ #

  int a[6]={23,15,64,33,40,58}; #

  int s1,s2; #

  s1=s2=a[0]; #

  for(int* p=a+1;p  if(s1>*p) s1=*p; #

  if(s2<*p) s2=*p;

#

  } #

  cout<  return 0; #

  } #

  运行时的输出结果是

#

  A)23        

#

  B)58         #

  C)64         

#

  D)79 #

  (21)有如下程序: #

  #include

#

  using namespace std;

#

  void f1(int& x,int& y) {int z=x; x=y; y=z;}

#

  void f2(int x;int y)   {int z=x; x=y; y=z;} #

  int main(){ #

  int x=10,y=26;

#

  f1(x,y);

#

  f2(x,y); #

  cout<  return 0;

#

  }

#

  运行时的输出结果是 #

  A)10         #

  B)16        

#

  C)26         

#

   D)36 #

   (22)有如下程序: #

   #include #

   using namespace std;

#

   class XA{

#

   int a;

#

   public: #

   static int b;

#

   XA(int aa):a(aa) {b++;}

#

   ~XA(){}

#

   int get(){return a;}

#

   }; #

   int XA::b=0;

#

   int main(){

#

   XA d1(2),d2(3);

#

   cout<

#

   }

#

   运行时的输出结果是 #

   A)5         

#

   B)6          #

   C)7          

#

  D)8 #

#p#分页标题#e#

  (23)有如下程序:

#

  #include #

  using namespace std; #

  class Point{

#

  int x,y;

#

  public:

#

  Point(int x1=0,int y1=0):x(x1),y(y1){} #

  int get(){return x+y;} #

  }; #

  class Circle{

#

  Point center; #

  int radius;

#

  public: #

  Circle(int cx,int cy,int r):center(cx,cy),raaius(r){} #

  int get(){return center.get()+radius;} #

  }; #

  int main(){

#

  Circle c(3,4,5);

#

  cout<  return 0; #

  } #

  运行时的输出结果是

#

  A)5          #

  B)7         

#

  C)9           #

  D)12

#

  (24)若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是

#

  A)operator long() const;

#

  B)operator long(BigNumber);

#

  C)long operator long() const;

#

  D)long operator long(BigNumber); #

  (25)有如下函数模板定义: #

  template

#

  T1 FUN(T2 n){return n*5.0;}

#

  若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为

#

  A)FUN(9)                  

#

  B)FUN<9>

#

  C)FUN(9)          

#

  D)FUN<9>(double) #

  (26)下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是

#

  A)cout<  B)cout<  C)cout<  D)cout<  (27)下列关于析构函数的描述中,错误的是

#

  A)析构函数可以重载

#

  B)析构函数由系统自动调用 #

  C)每个对象的析构函数只被调用一次

#

  D)每个类都有析构函数

#

  (28)下列关于构造函数的描述中,错误的是 #

  A)构造函数名与类名相同      #

  B)构造函数可以有返回值 #

  C)构造函数可以重载          #

  D)每个类都有构造函数

#

  (29)若PAT是一个类,则程序运行时,语句“PAT(*ad)[3];”调用PAT的构造函数的次数是

#

  A)0          #

  B)1          #

  C)2           #

  D)3

#

  (30)下列描述中,错误的是 #

  A)公有继承时基类中的公有成员在派生类中仍是公有成员

#

  B)公有继承时基类中的保护成员在派生类中仍是保护成员

#

  C)保护继承时基类中的公有成员在派生类中仍是公有成员 #

  D)保护继承时基类中的保护成员在派生类中仍是保护成员

#

  (31)生成派生类对象时,派生类构造函数调用基类构造函数的条件是 #

  A)无需任何条件 #

  B)基类中显式定义了构造函数 #

  C)派生类中显式定义了构造函数#p#分页标题#e# #

  D)派生类构造函数明确调用了基类构造函数

#

  (32)下列关于派生类和基类的描述中,正确的是

#

  A)派生类成员函数只能访问基类的公有成员 #

  B)派生类成员函数只能访问基类的公有和保护成员

#

  C)派生类成员函数可以访问基类的所有成员

#

  D)派生类对基类的默认继承方式是公有继承

#

  (33)有如下类模板定义:

#

  template

#

  class BigNumber{

#

  long n; #

  public: #

  BigNumber(T i):n(i){} #

  BigNumber operator+(BigNumber b){ #

  return BigNumber(n+b.n); #

  }

#

  }; #

  己知b1、b2是BigNumber的两个对象,则下列表达式中错误的是

#

  A)bl+b2     

#

  B)b1+3      

#

  C)3+b1        #

  D)3+3 #

  (34)下列关于文件流的描述中,正确的是 #

  A)文件流只能完成针对磁盘文件的输入输出 #

  B)建立一个文件流对象时,必须同时打开一个文件 #

  C)若输入流要打开的文件不存在,将建立一个新文件

#

  D)若输出流要打开的文件不存在,将建立一个新文件 #

  (35)有如下程序: #

  #include #

  using namespace std;

#

  class Pair{ #

  int m,n;

#

  public:

#

  Pair(int j,int k):m(j),n(k){}

#

  int get() {return m;} #

  int get() const {return m+n;}

#

  };

#

  int main(){

#

  Pair a(3,5);

#

  const Pair b(3,5); #

  cout+a.get()<  return 0; #

  } #

  运行时的输出结果是

#

  A)33        

#

  B)38         #

  C)83          #

  D)88

#

  二、填空题

#

  (1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

#

  (2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF。则后序遍历结果为 【2】 。 #

  (3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】 测试。

#

  (4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。 #

  (5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

#

  (6)若有定义语句“int x=10,y=20,z=20;”,则表达式x>z&&y==z的值为 【6】 。 #

  (7)有如下语句序列: #

  int x=-10;while(++x){ }

#

  运行时while循环体的执行次数为 【7】 。#p#分页标题#e#

#

  (8)有如下语句序列:

#

  int arr[2][2]={{9,8},{7,6}};

#

  int *p=arr[0]+1; cout<<*p<  运行时的输出结果是 【8】 。 #

  (9)函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。 #

  int fun(char *str){

#

  int num=0;

#

  while(*str){ #

  num*=10;

#

  num+= 【9】 ; #

  str++; #

  } #

  return num;

#

  } #

  (10)若要将函数“void FriFun();”声明为类MyClass的友元函数,则应在类MyClass的定义中加入语句 【10】 。 #

  (11)下列程序的输出结果为012,请根据注释将横线处的缺失部分补充完整。

#

  #include #

  using namespace std; #

  class Test{

#

  public:

#

  Test(int a) {data=a;}

#

  ~Test() {}

#

  void print(){cout<  private: #

  int data;

#

  }; #

  int main(){

#

  Test t[3]={ 【11】 };//对有3个元素的Test类对象数组t初始化t[i].print(); #

  for(int i=0;i<3;i++) #

  return 0; #

  }

#

  (12)请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。

#

  #include #

  using namespace std; #

  class Base{

#

  public: #

  void print(){cout<<"Base";} #

  };

#

  class Derived: 【12】 Base{};

#

  int main(){

#

  Derived d;

#

  d.print(); #

  return 0; #

  } #

  (13)下列程序的输出结果为1 2.3 2 4.6,请将横线处的缺失部分补充完整。

#

  #include

#

  using namespace std;

#

  class Base{ #

  public: #

  Base(int a):idata(a){} #

  void print(){cout<  private:

#

  int idata; #

  }; #

  class Derived:public Base{

#

  public:

#

  Derived(int a;double b): 【13】 ,ddata(b){}

#

  void print(){Base::print();cout<  private:

#

  double ddata;

#

  };

#

  int main(){

#

  Derived dl(1,2.3),d2(2,4.6); #

  d1.print();

#

  d2.print();

#

  return 0;

#

  }

#

  (14)下列程序的输出结果为-5/8 -3/4,请将横线处的缺失部分补充完整。 #

  #include #

  using namespace std;

#

  class Fraction{ //“分数”类

#

  public:

#

  Fraction(double a,double b):num(a),den(b){} #

  ~Fraction(){} #

  //重载取负运算符“-”,返回一个分数对象,其分子是原来分子的相反数。#p#分页标题#e# #

  Fraction operator-(){ #

  【14】

#

  return f;

#

  } #

  void print(){ cout<  private:

#

  double num; //分子

#

  double den; //分母 #

  };

#

  int main(){

#

  Fraction f1(5;8),f2(3,4);

#

  (-f1).print();(-f2).print(); #

  return 0; #

  }

#

  (15)函数Min的功能是返回具有n个元素的数组array中的最小值。请将横线处的缺失部分补充完整,使得程序的输出结果为1.24。

#

  #include

#

  using namespace std; #

  template #

  T Min(T* array,int n){

#

  T min=array[0];

#

  for(int i=1;i  if(array[i]  return min; #

  } #

  int main(){ #

  double arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};

#

  cout<< 【15】 ; #

  return 0;

#

  } #

#

责编:小鱼 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心