试题

计算机二级《C++》上机强化练习题

时间:2024-10-21 15:56:33 试题 我要投稿
  • 相关推荐

2016计算机二级《C++》上机强化练习题

  2016年全国计算机等级考试时间为3月26日-29日,为了帮助大家顺利通过计算机二级考试,下面百分网小编为大家带来2016计算机二级《C++》上机强化练习题,供大家参考学习,预祝考生备考成功!

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

  1、有如下程序:

  #inClude using namespaCe std; Class B{

  publiC:

  virtual void show(){Cout<<”B”;} };

  Class D:publiC B{ . publiC:

  void show(){Cout<<”D”;} };

  void funl(B * ptr){ptr一>show();} void fUN2(B&ref){ref.show();}

  voidfhIl3(B B.{b.show();} int main()

  {

  B b,* P=new D; D d;

  funl(P); fun2(B.; fun3(D);

  delete P; return 0; }

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

  A.BBB

  B.BBD

  C.DBB

  D.DBD

  2、下面描述中错误的是( )。

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

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

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

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

  3、已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则( )。

  A.FA必须定义在FB之前

  B.FB必须定义在FA之前

  C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

  D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

  4、有如下函数定义:

  void funC(int a,int&B. {a++;b++;}

  若执行代码段:

  int x=0,Y = 1; funC(X,Y);

  则变量x和y的值分别是(  )。

  A.0和1

  B.1和1

  C.0和2

  D.1和2

  5、下面程序的输出结果是( )。

  #include

  class example

  {

  int a;

  public:

  example(int B.{a=b++;}

  void print(){a=a+1;eout< void print()const{cout< };

  void main()

  {

  example x(3);

  const example Y(2);

  A print();

  B print();

  }

  A.2 2

  B.4 3

  C.4 2

  D.3 2

  6、下列有关类继承的叙述中,错误的是( )。

  A.继承可以实现软件复用

  B.虚基类可以解决由多继承产生的二义性问题

  C.派生类构造函数要负责调用基类的构造函数

  D.派生类没有继承基类的私有成员

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

  #include

  int fun(int a[],int n) {

  int resuh=1;

  for(inl i=1;i<11;1‘++)

  result=result * a[i];

  retum result;

  } void main()

  int a[3]={3,4,5}:

  cout< }

  A.12

  B.15

  C.20

  D.60

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

  A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

  B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

  C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

  D.以上说法都不正确

  9、在满足实体完整性约束的条件下( )。

  A.一个关系中应该有一个或多个候选关键字

  B.一个关系中只能有一个候选关键字

  C.一个关系中必须有多个候选关键字

  D.一个关系中可以没有候选关键字

  10、下面关于c+十语言变量的叙述错误的是( )。

  A.c++语言中变量分为aut0、static、extem和register4种存储类型

  B.自动变量和外部变量的作用域为整个程序

  C.内部静态变量的作用域是定义它的函数

  D.外部静态变量的作用域是定义它的文件

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

  #include void main()

  {

  int num=1:

  int&ref=num; ref=ref+2:

  cout< }

  A.13

  B.16

  C.36

  D.33

  12、 有以下程序:

  #include float tun(int X,int Y) {return(X+Y);} void main()

  {int a=2,b=5,c=8;

  cout< 程序运行后的输出结果是( )。

  A.编译出错

  B.9

  C.21

  D.9.0

  13、 下列运算符中,不能被重载的是(  )。

  A.&&

  B.!=

  C..

  D.++

  14、 算法的空间复杂度是指( )。

  A.算法在执行过程中所需要的计算机存储空间

  B.算法所处理的数据量

  C.算法程序中的语句或指令条数

  D.算法在执行过程中所需要的临时工作单元数

  15、 c++语言类体系中,不能被派生类继承的有( )。

  A.转换函数

  B.构造函数

  C.虚函数

  D.静态成员函数

  16、 对C++编译器区分重载函数无任何意义的信息是( )。

  A.参数类型

  B.参数个数

  C.返回值类型

  D.常成员函数关键字Const

  17、 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。

  A.公有类型

  B.私有类型

  C.保护类型

  D.友元类型

  18、 下列程序的运行结果为(  )。

  #include int i=0;

  class A{ public: A(){i++;}

  };

  void main() {

  A a,b[3],*C; C=b;

  cout< }

  A.2

  B.3

  C.4

  D.5

  19、 以下关键字不能用来声明类的访问权限的是(  )。

  A.publiC

  B.statiC

  C..proteCted

  D.private

  20、 设有定义int a=1;float f=1.2;char C='a';,则下列表示错误的是( )。

  A.++a;

  B.f一一;

  C.c++;

  D.8++;

  21、 下列不是描述类的成员函数的是( )。

  A.构造函数

  B.析构函数

  C.友元函数

  D.复制构造函数

  22、 有如下程序:

  int x=3:

  do{

  x-=2;

  COU[< }while(!(--X));

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

  A.1

  B.3 0

  C.1—2

  D.死循环

  23、 下列选项中属于面向对象设计方法主要特征的是( )。

  A.继承,

  B.自顶向下

  C.模块化

  D.逐步求精

  24、 对于类定义 class A{

  public:

  void func2(){}

  };

  class B:public A{ public:

  w)id funcl()| cout<<"class B func l”< virtual voiIl fimc2(){cout<<"class B func 2" <};

  下面正确的叙述是( )。

  A.A::rune2()和B::funcl()都是虚函数

  B.A::func2()和B::funel()都不是虚函数

  C.B::funcl()是虚函数,而A::func2()不是虚函数

  D.B::funcl()不是虚函数,而A::func2()是虚函数

  25、 语句ofstream f(”SALARY.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALA-RY.DAT并与之连接,并且( )。

  A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件

  B.若文件存在,将其置为空文件;若文件不存在,打开失败

  C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件

  D.若文件存在,打开失败;若文件不存在,建立一个新文件

  26、 下列有关继承和派生的叙述中,正确的是(  )。

  A.如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员

  B.派生类的成员函数可以访问基类的所有成员

  C.基类对象可以赋值给派生类对象

  D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

  27、 下列符号中可以用做C++标识符的是( )。

  A._radius

  B.f00~bar

  C.else

  D.3room

  28、有如下程序:

  #include

  using namespace std;

  classBase{

  public:

  void fun(){

  __________________

  cout<<”Base::fun”< };

  class Derived:public Base{

  public:

  voidfun(){

  cout<<”Derived::fun”< }

  };

  int main(){

  Derived d;

  A fun();

  return 0;

  }

  已知其执行后的输出结果为:

  Base::fun

  Derived::fun

  则程序中下画线处应填入的语句是(  )。

  A. Base.fun();

  B.Base::fun();

  C.Base—>fun();

  D.fun();

  29、 以下各选项组中,均是C++语言关键字的组是( )。

  A.public operator this

  B.shod string static

  C.it while>=

  D.prirate cout printf

  30、 要想使23.78965421的输出为23.7887,应用的语句是( )。

  A.cout<<23.78965421;

  B.cout

  D.cout<

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

  A.软件集成测试计划

  B.软件详细设计说明书

  C.用户手册

  D.软件需求规格说明书

  32、 下列关于类定义的说法中,正确的是( )。

  A.类定义中包括数据成员和函数成员的声明

  B.类成员的缺省访问权限是保护的

  C.数据成员必须被声明为私有的

  D.成员函数只能在类体外进行定义

  33、 下列关于数据库设计的叙述中,正确的是( )。

  A.在需求分析阶段建立数据字典

  B.在概念设计阶段建立数据字典

  C.在逻辑设计阶段建立数据字典

  D.在物理设计阶段建立数据字典

  34、 下列选项,不正确的是( )。

  A.for(int a=1;a<=10;a++);

  B.int a=1;

  do

  {

  a++:

  }while(a<=10);

  C.int a=1;

  while(a<=10)

  {

  a++:

  }

  D.for(int a=1;a<=10;a++)a++;

  35、 下列关于栈叙述正确的是( )。

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

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

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

  D.栈底元素最先被删除

  36、 下列关于运算符重载的描述中,正确的是( )。

  A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

  B.一元运算符只能作为成员函数重载

  C.二元运算符重载为非成员函数时,参数表中有一个参数

  D.c++中可以重载所有的运算符

  37、 下面关于C++语言的描述错误的是( )。

  A.C++语言支持数据封装

  B.C++语言中引入友元,没有破坏封装性

  C.C++语言允许函数名和运算符重载

  D.C++语言支持动态联编

  38、 在c++语言程序中,对象之间的相互通信通过( )。

  A.继承实现

  B.调用成员函数实现

  C.封装实现

  D.函数重载实现

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

  A.循环队列是队列的一种链式存储结构

  B.循环队列是队列的一种顺序存储结构

  C.循环队列是非线性结构

  D.循环队列是一种逻辑结构

  40、 下面不属于需求分析阶段任务的是( )。

  A.确定软件系统的功能需求

  B.确定软件系统的性能需求

  C.需求规格说明书评审

  D.制定软件集成测试计划

  二、基本操作题(18分)

  41、请使用VC6或使用【答题】菜单打开考生文件夹progl下的工程progl,该工程中包含程序文件main. cpp,其中有Salary(“工资”)类和主函数main的定义。程序中位于每个“//ERROR ****found****”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为:

  应发合计:3500应扣合计:67.5实发工资:3432.5

  注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。

  #include

  using namespace std; class Salary{

  public:

  Salary(const char *id,double the_base,double the bonus,double the_tax) //ERROR **********found**********

  :the_base(base),the_bonus(bonus),the_tax(tax) {

  staff_id=new char[strlen(id)+1]; strcpy(staff_id,id);

  }

  //ERROR **********found********** ~Salary(){delete * staff_id;}

  double getGmssPay()const{retum base+bonus;}//返回应发项合计

  double getNetPay()const}retum getGmssPay()-tax;}//返回实发工资额 private:

  char * staff id;//职工号 double base;//基本工资 double bonus;//奖金

  double tax;//代扣个人所得税 };

  int main(){

  Salary pay(”888888”,3000.0,500.0,67.50);

  cout<<”应发合计:”< cout<<”应扣合计:”< //ERROR**********found**********

  cout<<”实发工资:”< return 0;

  }

  三、简单应用题(24分)

  42、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。

  Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:

  公有成员函数 功能

  push 入栈:在栈顶位置添加一个元素

  pop 退栈:取出并返回栈顶元素

  ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。

  请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:

  a,b,C

  C,b,a

  注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。

  //proj2.cpp

  #include

  using namespacc std;

  class Stack{

  public:

  virtual void push(char C)=0;

  virtual char pop()=0;

  };

  class ArrayStack:public Stack{

  char*P;

  int maxSizc;

  int top;

  public:

  ArravStack(int s)

  {

  top=0;

  maxSize=s:

  //*********found*********

  P=______;

  }

  ~ArrayStack()

  {

  //*********found*********

  _______;

  }

  void push(char c)

  }

  if(top==maxSize){

  cerr<<”Overflow! \n”:

  return;

  }

  //*********found*********

  _______;

  top++:

  }

  char pop()

  {

  if(top==0){

  cerr<<”Underflow!、n”;

  return‘\0’;

  }

  Top--;

  //*********found*********

  ______;

  }

  };

  void f(Stack&sRef)

  {

  char ch[]={‘a’,‘b’,‘c’};

  cout< sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]);

  cout< cout< cout< }

  int main()

  {

  ArrayStack as(10);

  f(as):

  return 0:

  }

  四、综合应用题(18分)

  43、请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:

  ValArray vl={1,2,3,4,5} ValArray v2={1,2,3,4,5} 要求:

  补充编制的内容写在“//*********333*********”与“//*********666*********”之间,不得修改程序的其他部分。

  注意:程序最后将结果输出到文件out.dat中。输出函数write To File已经编译为boj文件,并且在本程序中调用。

  //ValArray.h

  #include using namespace std; class ValArray{

  int *v: int size; public:

  ValArray(const int * P,int n):size(n) {

  v=new int[size];

  for(int i=0;i

【计算机二级《C++》上机强化练习题】相关文章:

2016计算机二级《C++》上机练习题06-09

2017计算机二级C++强化练习题08-17

全国计算机二级《C++》上机试题及答案08-15

2017计算机二级C++考前练习题09-18

2017年计算机二级C++强化习题及答案09-04

计算机二级C++考试强化训练题201710-26

2016年9月计算机二级《C++》上机题库及答案09-01

2016计算机二级考试C++练习题及答案07-15

2017计算机二级C++考前练习题及答案09-11

2017计算机二级C++基础练习题及答案08-07