计算机等级 百分网手机站

全国计算机二级C++语言程序设计考试试题

时间:2017-06-23 11:27:21 计算机等级 我要投稿

2017年全国计算机二级C++语言程序设计考试试题

  一、选择题(每小题1分,共40分)

  1有如下程序:

  #include

  using namespace std;

  class Base{

  protected:

  Base(){cout<<’A’;}

  Base(char C){cout<

  };

  class Derived:public Base{

  public:

  Derived(char C){tout<

  };

  int main(){

  Derived dl(’B’);

  retum 0;

  }

  执行这个程序的输出结果是(  )。

  A.BB.BAC.ABD.BB

  参考答案:C

  参考解析:本题考查派生类的构造函数和析构函数.在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数;对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个派生类对象d1,首先执行基类的构造函数,输出A;然后执行派生类的构造函数,输出B。所以答案为c。

  2下列符号中能够作为C++标识符的是( )。

  A.CoflstB.2aC._shapeD..Count

  参考答案:C

  参考解析:本题考查c++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用c++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符”一”,且不能以此字符开头。故答案为C。

  3有如下程序:

  #include

  using namespace std;

  class Base

  {

  private:

  void funl()const{tout<<”funl”;}

  protected:

  void fun2()const{tout<<”fun2”;}

  public:

  void fun3()const{cout<<”fhll3”;}

  };

  class Derived:protected Base

  {

  public:

  void fhn4()const{cout<<”filn4”;}

  };

  int main()

  {

  Derived obj;

  obj.funl();//①

  obj.fun2();//②

  obj.furd();//③

  obj.fun4();//④

  return U:

  }

  其中有语法错误的语句是(  )。

  A.①②③④B.①②③C.②③④D.①④

  参考答案:B

  考解析:本题考查保护继承中派生类对基类的访问属性,受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,保护基类的所有成员在派生类中都被保护起来,在类外不能访问,所以①②③错误。

  4有如下程序:

  #include

  using namespace std;

  class Instrument{

  public:

  virtual void Display()=0;

  };

  class Pian0:public Instrument}

  public:

  void Display(){/*函数体略*" >

  };

  intmain(){

  Instrument S;

  Instrument*P=0:

  //…;

  return 0;

  }

  下列叙述中正确的是(  )。

  A.语句“Insturment*P=0;”编译时出错

  B.语句“Instnunent s;”编译时出错

  C.类Pian0中的Display函数不是虚函数

  D.类Instrument是一个虚基类

  参考答案:B我

  参考解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类不能被实例化,所以语句“Instrmnent s;”在编译时出错。

  5如下函数模板:

  templateT square(T x){return x*x;} 其中T是(  )。

  A.函数形参B.函数实参C.模板形参D.模板实参

  参考答案:C

  参考解析:本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。

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

  A.内联函数B.重载函数C.递归函数D.函数模板

  参考答案:A

  参考解析:一般函数进行调用时,要将程序执行权转到被调用函数中.然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将{将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。

  7有如下程序:

  #inClude using namespaCe std; Class Point{

  publiC:

  statiC int number;

  publiC:

  Point(  )t.number++;} ~Point(  ){number--;}

  }; , int P0int::number=0;

  int main(  ){

  Point *ptr:

  Point A,B; Point*ptr_point=new Point[3]; ptr=ptr_point;’

  }

  Point C;

  Cout<

  return 0; }

  执行这个程序的输出结果是(  )。

  A.3B.4C.6D.7

  参考答案:C

  参考解析:本题考查默认构造函数.题目中定义.个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。

  二、填空题(每空2分,共30分)

  请将每空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

  注意:以命令关键字填空的必须拼写完整。

  1.数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是 【1】 。

  【答案】数据库系统

  2.软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 【2】 测试。

  【答案】黑盒

  3.符合结构化原则的三种基本控制结构是:选择结构、循环结构和 【3】 。

  【答案】顺序结构

  4.一棵二叉树第六层(根结点为第一层)的结点数最多为 【4】 个。

  【答案】32

  5.数据结构分为逻辑结构和存储结构,循环队列属于 【5】 结构。

  【答案】存储

  6.有如下程序段:

  int x=1,Y=2,z=3;

  x=x^z;

  y=y^z;

  z=x^y;

  cout<执行这个程序段的输出是 【6】 。

  【答案】100

  7.若要访问指针变量p所指向的数据,应使用表达式 【7】 。

  【答案】*P

  8.已知一个函数的原型是:

  int fn(double x);

  若要以5.27为实参调用该函数,应使用表达式 【8】 。

  【答案】fn(5.27)

  9.通过使用new和delete两个运算符进行的`分配为 【9】 存储分配。

  【答案】【9】动态

  10.如果类B继承了类A,则称类A为类B的基类,类B称为类A的 【10】 。

  【答案】【10】派生类

  11.将x+y中的+运算符用友元函数重载应写为 【11】 。

  【答案】【11】 operator+(x,y)

  12.请将下列类定义补充完整。

  class Base { public: void fun( ){ cout<<"Base::fun"<

  class Derived : public Base {

  public:

  void fun( ) {

  【12】 //显式调用基类的fun函数

  cout<<"Derived::fun"<}};

  【答案】【12】Base::fun()

  13.多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[ ]运算符只能作为类的 【13】 函数重载。

  【答案】【13】成员

  14.表达式operator+(x,y)还可以表示为 【14】 。

  【答案】【14】x+y

  15.C++语言中的多态性分为编译时的多态性和 【15】 时的多态性。

  【答案】运行