计算机学历 百分网手机站

计算机二级《C++》预测试题

时间:2017-12-11 19:27:13 计算机学历 我要投稿

2017年计算机二级《C++》预测试题

  一、选择题

  1关于运算符重载,下列表述中正确的是(  )。

  A.c++已有的任何运算符都可以重载

  B.运算符函数的返回类型不能声明为基本数据类型

  C.在类型转换符函数的定义中不需要声明返回类型

  D.可以通过运算符重载来创建c++中原来没有的运算符

  参考答案:C

  参考解析:重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5 个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c++的标准类型。故本题答案为c。

  2在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( )。

  A.友元函数B.虚函数C.构造函数D.析构函数

  参考答案:C

  参考解析:构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。

  3软件设计中模块划分应遵循的准则是( )。

  A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合

  参考答案:B

  参考解析:软件没计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽町能的高。

  4如果类A被说明成类B的友元,则( )。

  A.类A的成员即类B的成员

  B.类B的成员即类A的成员

  C.类A的成员函数不得访问类B的成员

  D.类B不一定是类A的友元

  参考答案:D

  参考解析:本题考查的是友元类的定义:类A为类B的友元类,则类A的所有成员函数都是类8的友元函数,但反之则不一定成立。

  5有如下类定义:

  class Foo

  {

  public:

  Foo(int v):value(V){}//①

  ~Foo(){}//②

  private:

  Foo(){}//③

  int value=0://④

  };

  其中存在语法错误的行是(  )。

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

  参考答案:D

  参考解析:本题考查对象的初始化,类的数据成员是不能在声明类时初始化的,所以本题答案为D。

  6下面关于数组的描述错误的是( )。

  A.在C++语言中数组的名字就是指向该数组第一个元素的指针

  B.长度为n的数组,下标的范围是0~n-1

  C.数组的大小必须在编译时确定

  D.数组只能通过值参数和引用参数两种方式传递给函数

  参考答案:D

  参考解析:本题考查的是数组的基本使用,数组还可以通过对应的指针调用传递参数,其余选项的说法都是正确的。

  7运算符重载是对已有的运算符赋予多重含义,因此( )。

  A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义

  B.可以改变一个已有运算符的优先级和操作数个数

  C.只能重载c++中已经有的运算符,不能定义新运算符

  D.C++中已经有的所有运算符都可以重载

  参考答案:C

  参考解析:重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5 个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c++的标准类型。故本题答案为c。

  8有如下类和对象的定义:

  class Constants{

  public:

  static double getPI(){return 3.1416;}

  };

  Constants constants:

  下列各组语句中,能输出3.1416的是( )。

  A.cout

  参考答案:D

  参考解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引用,即Constants::getpI();另一种是使用对象来引用,即constants.getPI()。所以本题答案为D。

  9程序流程图中带有箭头的线段表示的是( )。

  A.图元关系B.数据流C.控制流D.调用关系

  参考答案:C

  参考解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。

  10下列程序的执行结果为( )。

  #include

  void main()

  {

  int a=3,b=0;

  int*P =&a;

  b=+a++;

  cout<<*P<<”,”<

  }

  A.3,4B.4,3C.3,3D.4,4

  参考答案:B

  参考解析:*P为所指对象a的值,语句“b=+a++;”等价于“b=b+a;a=a+1;”。

  11对长度为n的线性表排序,在最坏情况下,比较次数不是n(rt一1)/2的排序方法是( )。

  A.快速排序B.冒泡排序C.直接插入排序D.堆排序

  参考答案:D

  参考解析:除了堆排序算法的比较次数是0(nlog2n),其他的都是n(n—1)/2。

  12字面常量42、4.2、42L的数据类型分别是(  )。

  A.long,double、intB.lon9、float、intC.int、double、longD.int、float、long

  参考答案:C