必胜高考网 > 计算机类 > 计算机等级 > 资讯 >

2015年计算机二级考试《C++》突破试卷

时间: 家辉2 资讯

  参考解析:在E—R图中实体集用矩形.属性用椭圆,联系用菱形。

  2有如下程序:

  #jnClude

  using namespaCe std; Class Part{

  publiC:

  Part(int x=0):val(X){Cout<

  private:

  int val; t };

  Class Whole{ publiC:

  Whole(int x,int Y,int z=0):p2(x),pl(y),val(z){Cout<

  private:

  Part pl,p2; int val;

  };

  int main() {

  Whole obj(1,2,3); return 0;

  }

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

  A.123321B.213312C.213D.123123

  参考答案:B

  参考解析:本题考查带参数的构造函数。本题中定义了一个对象obj,那么执行其构造函数,初始化p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行p1,输出2,然后执行p2输出1,然后输出3,最后一次输出312。所以本题答案为8。

  3没有定义int x;float Y;,则10+x+y值的数据类型是( )。

  A.intB.doubleC.floatD.不确定

  参考解析:由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐含地将低类型转化为高类型,由低至高的顺序为int→float→double。

  4有如下类定义:

  class Point{

  private:

  static int how_many;

  };

  ___________how_many=0;

  要初始化Point类的静态成员how_many,下画线处应填入的内容是( )。

  A.intB.static intC.int Point::D.static int Point::

  参考解析:本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外进行初始化,其一般形式为:数据类型类名::静态数据成员名=初值。所以本题答案为C。

  5有如下类定义:

  class Test

  {

  public:

  Test(){a=0;c=0;}//①

  int f(im A.const{this->a=a;}//②

  static int g(){return a;f//③

  void h(int B.{Test:.b=b;};//④

  private:

  int a;

  static int b;

  const int C;

  };

  int Test::b=0:

  在标注号码的行中,能被正确编译的是(  )。

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

  参考答案:D

  参考解析:只能通过构造函数的参数初始化列表对常数据成员进行初始化,本题中常数据成员为C。①通过默认构造函数初始化c,所以不正确。常成员函数只能引用本类中数据成员,而不能修改它,所以②不正确。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员,所以

  ③错误。

  6某系统总体结构图如下图所示:

  该系统总体结构图的深度是( )。

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

  参考解析:根据总体结构图可以看出陔树的深度为3,比如:XY系统——功能2——功能2.1,就是最深的度数的一个表现。

  7有如下类定义:

  Class AA{ int a; publiC: AA(int n=0):a(n){}

  };

  Class BB:publiC AA{ publiC:

  BB(int n)—— };

  其中横线处缺失的部分是( )。

  A.:a(n){}B.:AA(n)|}C.{a(n);}D.{a=n;}

  参考答案:B

  参考解析:本题考查公用继承对基类成员访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为B。

  8有如下类定义:

  class MyClass{

  int value;

  public:

  MyClass(int n):value(n){}

  int getValue()const{retum value;}

  };

  则类MyClass的构造函数的个数是( )。

  A.1个B.2个C.3个D.4个

  参考答案:B

  参考解析:本题考查类的默认构造函数和自定义的构造函数、本题中MyClass(int n):value(n){}为自定义的构造函数,加上默认构造函数,一共有2个构造函数。

  9下列关于派生类构造函数和析构函数的说法中,错误的是(  )。

  A.派生类的构造函数会隐含调用基类的构造函数

  B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数

  C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

  D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

  参考答案:D

  参考解析:在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

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

  A.栈是一种先进先出的线性表

  B.队列是一种后进先出的线性表

  C.栈与队列都是非线性结构

  D.以上三种说法都不对

  参考答案:D

  参考解析:栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。

  11关于关键字class和typename,下列表述中正确的是(  )。

  A. 程序中的typename都可以替换为class

  B.程序中的class都可以替换为typename

  C.在模板形参表中只能用{ypename来声明参数的类型

  D.在模板形参表中只能用class或typenanle来声明参数的类型

  参考答案:A

  参考解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了 typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。

  12数据库管理系统是(  )。

  A.操作系统的一部分

  B.在操作系统支持下的系统软件

  C.一种编译系统

  D.一种操作系统

  参考答案:B

  参考解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。

  13软件生命周期是指( )。

  A.软件产品从提出、实现、使用维护到停止使用退役的过程

  B.软件从需求分析、设计、实现到测试完成的过程

  C.软件的开发过程

  D.软件的运行维护过程

  参考答案:A

  参考解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

  14下列符号中不属于C++关键字的是(  )。

  A.friendB.namespaeeC.ContinueD.byte

  参考答案:D

  参考解析:本题考查C++关键字,属于基本常识,显然D选项不正确。

  15下面关于数组的初始化正确的是( )。

  A.char str[]={’a’,’b’,’C’}

  B.char str[2]={’a’,’b’,’c’}

  C.char str[2][3]={{’a’,’b’},{’C’,’d’},{’e’,’f’}}

  D.char str()={~a,~b,~C}

  参考答案:A

  参考解析:本题考查的是字符数组的初始化。选项B中用3个庀素初始化大小为2的数组,越界了;选项c中应该是2行3列的数组,题中使用3行2列初始化;选项D中数组合后应用方括号。

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

  A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

  B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

  C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

  D.链式存储结构比顺序存储结构节省存储空间

  参考答案:A

  参考解析:链式存储结构既可以针对线性结构也可以针对非线性结构,所以B与C错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D错误。

  17下列各组类型声明符中,含义相同的一组是( )。

  A.unsigned long int和long

  B.signed short int和short

  C.unsigned short和short

  D.short int和int

  参考答案:B

  参考解析:本题考查整型变量的类型,A、c选项中前者为无符号的,后者为有符号的,D选项中short int为2个字节,int为4个字节。

  18下面程序的运行结果是( )。

  #include class base{

  protected: int a; public:

  base(){cout<<”0”;}

  }; class basel:virtual base{

  public:

  basel(){cout<<”1”;}

  };

  class base2:virtual base i public: base2(){cout<<”2”;}

  };

  class derived:public basel,public base2{ public:

  derived(){cout<<”3”;}

  };

  void main()

  derived obj;

  cout<

  A.0123B.3120C.0312D.3012

  参考答案:A

  参考解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。

  19下列描述正确的是( )。

  A.表示m>n为true或mn&&m

  参考答案:D

  参考解析:本题主要考查c++语言的基本语法,选项A中应该为m>n|j m

  20下列运算符函数中肯定不属于类FunNumber的成员函数的是(  )。

  A.int operator一(FunNumber);

  B.FunNumber operator一();

  C.FunNumber operator一(int);

  D.int operator一(FunNumber,FunNumber);

  参考答案:D

  参考解析:本题考查运算符重载的一些规则:①一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;②双目运算符=、()、[]、->不能重载为类的友元函数;③类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;④若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;⑤若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;⑥当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算符函数必须作为一个友元函数来实现。所以答案为D。

  21下列程序的运行结果是( )。

  #include

  class A

  {

  int a;

  public:

  A(){a=0;}

  A(int aA.

  {

  a=aa;

  cout<

  }

  };

  void main()

  {

  A X,Y(2),z(3);

  cout<

  }

  A.00B.23C.34D.25

  参考答案:B

  参考解析:本题考查的是对构造函数的掌握,另外“++”运算符是右结合的,所以在进行输出的时候都是先把原来的输出后再自加l。

  22关于函数重载,下列叙述中错误的是( )。

  A.重载函数的函数名必须相同

  B.重载函数必须在参数个数或类型上有所不同

  C.重载函数的返回值类型必须相同

  D.重载函数的函数体可以有所不同

  参考解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应…个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为c。

55675