计算机等级 百分网手机站

计算机二级C++考试试卷及答案

时间:2017-09-29 18:02:53 计算机等级 我要投稿

2016年计算机二级C++考试试卷及答案

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

  1.数据的存储结构是指(  )。

  A.数据所占的存储空间

  B.数据的逻辑结构在计算机中的存放形式

  C.数据在计算机中的顺序存储方式

  D.存储在计算机外存中的数据

  2.将E-R图转换到关系模式时,实体与实体间的联系可以表示成(  )。

  A.属性

  B.关系

  C.键

  D.域

  3.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为(  )。

  A.125

  B.n/Z

  C.n

  D.n+1

  4.树是结点的集合,它的根结点的数目是(  )。

  A.有且只有1个

  B.1或多于1

  C.0或1

  D.至少有2个

  5.设R是一个二元关系,S是一个三元关系,则下列运算中正确的是(  )。

  A.R-S

  B.R×S

  C.R∩S

  D.R∪S

  6.关于结构化程序设计原则和方法的描述错误的是(  )。

  A.选用的结构只允许有一个入口和一个出口

  B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

  C.不允许使用GOTO语句

  D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

  7.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为(  )。

  A.并运算

  B.交运算

  C.差运算

  D.积运算

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

  A.在面向对象的程序设计中,各个对象之间具有密切的关系

  B.在面向对象的程序设计中,各个对象都是公用的

  C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

  D.上述三种说法都不对

  9.结构化程序设计的三种基本结构是(  )。

  A.过程、子程序和分程序

  B.顺序、选择和重复

  C.递归、堆栈和队列

  D.调用、返回和转移

  10.在数据库设计中,将E-R图转换为关系模式的过程属于(  )。

  A.需求分析阶段

  B.逻辑设计阶段

  C.概念设计阶段

  D.物理设计阶段

  11.在C++语言中函数返回值的类型是由(  )决定的。

  A.调用该函数时系统临时

  B.return语句中的表达式类型

  C.定义该函数时所指定的函数类型

  D.调用该函数时的主调函数类型

  12.下列描述正确的是(  )。

  A.表示m>n为true或mn&&m  B.switch语句结构中必须有default语句

  C.if语句结构中必须有else语句

  D.如果至少有一个操作数为true,则包含‖运算符的表达式为true

  13.使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方式为(  )。

  A.ios::in

  B.ios::out

  C.ios::inlios::out

  D.没有默认

  14.下列各类函数中,不是类的成员函数的是(  )。

  A.构造函数

  B.抽象类

  C.派生类

  D.以上都不对

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

  A.charstr[]={’a’,’b’,’e’}

  B.charstr[2]={’a’,’b’,’e’)

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

  D.charstr()={’a’,’b’,’C’}

  16.类模板templateclassX{…},其中友元函数f对特定类型T(如int),使函数f(x)成为x模板类的友元,则其说明为(  )。

  A.friendvoidf();

  B.friendvoidf(x);

  C.friendvoidA::f();

  D.friendvoidC::f(x);

  17.类MyClass的定义如下:

  classMyClass

  {

  public:

  MyClass(){value=0;}

  SetVariable(inti){valtic=i;}

  private:

  intvalue;

  };

  MyClass*P,my;p=&my;

  则对下列语句序列正确的描述是(  )。

  A.语句p=&my;是把对象my赋值给指针变量P

  B.语句MyClass*P,my;会调用两次类MyClass的构造函数

  C.对语句*P.SetVariable(5)的调用是正确的

  D.语句P->SetVariable(5)与语句my.SetVariable(5)等价

  18.下面关于break语句的描述中,不正确的是(  )。

  A.break可以用于循环体内

  B.break语句可以在for循环语句中出现多次

  C.break语句可以在switch语句中出现多次

  D.break语句可用于if条件判断语句内

  19.如果表达式-x/y中的“--”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(  )。

  A.operator/(x.operator--(),y);

  B.operator/(operator--(x),y);

  C.X.operator--().operator/(y);

  D.y.operator/(operator--(x));

  20.已知类A有公用数据成员a,并重载了=运算符,且有Aobj2;constA*ptr=newA;,则下列语句错误的是(  )。

  A.ptr->a=100;

  B.ptr=&obj2;

  C.ptr++;

  D.obj2=*ptr;

  21.可以用P.a的形式访问派生类对象P的基类成员a,其中a是(  )。

  A.私有继承的公有成员

  B.公有继承的私有成员

  C.公有继承的保护成员

  D.公有继承的公有成员

  22.下面程序的运行结果为(  )。

  #include

  classA

  {

  intnum;

  public:

  A(inti){num=i;)

  A(A&a){num=a.num++;}

  voidprint(){cout<  };

  voidmain()

  {

  Aa(1),b(a);

  a.print();

  b.print();

  }

  A.11B.12

  C.21D.22

  23.设有定义charstr[80];以下不能将输入数据first\nsecond\n读取到数组str中的语句是(  )。

  A.cin.get(str,strlen(str));

  B.cin.getline(str,strlen(str));

  C.cin>>str;

  D.cin.read(str,strlen(str));

  24.下列程序的输出结果为(  )。

  #include

  classTestClass

  {

  public:

  TestClass(){val++;}

  static,intval;

  };

  intTestClass::val=0;

  voidmain()

  {

  TestClasscsl;

  cout<  TestClasscs2;

  TestClasscs3,cs4;

  cout<  }

  A.O3

  B.13

  C.14

  D.24

  25.有以下类定义:

  classMyClass

  {

  private:

  intid;

  chargender;

  char*phone;

  public:

  MyClass():id(0),gender(’#’),phone(NULl){}

  MyClass(intn0,charge=’#’,char*ph=NULL)

  {id=no;gender=ge;phone=ph;}

  };

  下列类对象定义语句中错误的是(  )。

  A.MyClassmyObj;

  B.MyClassmyObj(11,"13301111155");

  C.MyClassmyObj(12,’m’);

  D.MyClassmyObj(12);

  26.下列是关于派生类声明的开始部分,其中正确的是(  )。