计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容

全国计算机二级C++语言程序设计考试精选选择题(1)

2017-5-22编辑:daibenhua

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

  1.下列数据结构中,属于非线性结构的是(  )。

  A.循环队列

  B.带链队列

  C.二叉树

  D.带链栈

  2.下列数据结构中,能够按照“先进后出”原则存取数据的是(  )。

  A.循环队列

  B.栈

  C.队列

  D.二叉树

  3.对于循环队列,下列叙述中正确的是(  )。

  A.队头指针是固定不变的

  B.队头指针一定大于队尾指针

  C.队头指针一定小于队尾指针

  D.队头指针可以大于队尾指针,也可以小于队尾指针

  4.算法的空间复杂度是指(  )。

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

  B.算法所处理的数据量

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

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

  5.软件设计中划分模块的一个准则是(  )。

  A.低内聚低耦合

  B.高内聚低耦合

  C.低内聚高耦合

  D.高内聚高耦合

  6.下列选项中不属于结构化程序设计原则的是(  )。

  A.可封装

  D.自顶向下

  C.模块化

  D.逐步求精

  7.软件详细设计产生的如下图所示。该图是(  )。

  

  A.N—S图

  B.PAD图

  C.程序流程图

  D.E—R图

  8.数据库管理系统是(  )。

  A.操作系统的一部分

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

  C.一种编译系统

  D.一种操作系统

  9.在E—R图中,用来表示实体联系的图形是(  )。

  A.椭圆图

  B.矩形

  C.菱形

  D.三角形

  10.有3个关系R、S和T如下表所示:

  

  其中关系T由关系R和s通过某种操作得到,该操作为(  )。

  A.选择

  B.投影

  C.交

  D.并

  11.4种基本结构中,能简化大量程序代码行的是(  )。

  A.顺序结构

  B.分支结构

  C.选择结构

  D.重复结构

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

  A.在栈中只能插入元素而不能删除元素

  B.在栈中只能删除元素而不能插入元素

  C.栈是特殊的线性表,只能在一端插入或删除元素

  D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

  13.下列有关数据库的叙述,正确的是(  )。

  A.数据处理是将信息转化为数据的过程

  B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

  C.关系中的每一列称为元组,一个元组就是一个字段

  D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字

  14.概要设计中要完成的事情是(  )。

  A.系统结构和数据结构的设计

  B.系统结构和过程的设计

  C.过程和接口的设计

  D.数据结构和过程的设计

  15.下面排序算法中,平均排序速度最快的是(  )。

  A.冒泡排序法

  B.选择排序法

  C.交换排序法

  D.堆排序法

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

  A.FA必须定义在FB之前

  B.FB必须定义在FA之前

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

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

  17.有如下两个类定义:

  ClaSSAA{};

  classBB{

  AAv1,*v2;

  BBv3;

  int*v4;

  };

  其中有一个成员变量的定义是错误的,这个变量是(  )。

  A.v1

  B.v2

  C.v3

  D.v4

  18.有如下类定义:

  classXX{

  intxdata;

  public:

  XX(intn=0):xdata(n){}

  };

  classYY:publicXX{

  intydata;

  public:

  YY(intm=0,intn=O):XX(m),ydata(n){}

  };

  YY类的对象包含的数据成员的个数是(  )。

  A.1

  B.2

  C.3

  D.4

  19.下列关于运算符函数的描述中,错误的是(  )。

  A.运算符函数的名称总是以0perator为前缀

  B.运算符函数的参数可以是对象

  C.运算符函数只能定义为类的成员函数

  D.在表达式中使用重载的运算符相当于调用运算符重载函数

  20.下列关于模板形参的描述中,错误的是(  )。

  A.模板形参表必须在关键字template之后

  B.模板形参表必须用括弧(  )括起来

  C.可以用class修饰模板形参

  D.可以用typename修饰模板形参

  21.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是(  )。

  A.ios_base::cur

  B.ios_base::beg

  C.ios_base::0ut

  D.ios_base::end

  22.下列字符串中可以用作C++标识符的是(  )。

  A.2009var

  B.goto

  C.test-2009

  D.123

  23.下列枚举类型的定义中,包含枚举值3的是(  )。

  A.enumtest{RED,YELLOW,BLUE,BLACK};

  B.enumtest{RED,YELLOW=4,BLUE,BLACK);

  C.enumtest{RED=-1,YELLOW,BLUE,BLACK};

  D.enumtest{RED,YELLOW=6,BLUE,BLACK);

  24.有如下程序段:

  inti=1:

  while(1){

  i++:

  if(i==10)break:

  if(i%2==0)cout<<’*’:

  }

  执行这个程序段输出字符*的个数是(  )。

  A.10

  B.3

  C.4

  D.5

  25.已知数组arr的定义如下:

  intarr[5]={1,2,3,4,5};下列语句中输出结果不是2的是(  )。

  A.cout<<*arr+1

  intfib(intn){

  if(n==0)returnl;

  elseif(n==l)return2:

  elsereturnfib(n-1)+fib(n-2);

  }

  若执行函数调用表达式fib(2),函数fib被调用的次数是(  )。

  A.1

  B.2

  C.3

  D.4

  27.Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是(  )。

  Samplea[2],*p=newSample;

  A.0

  B.1

  C.2

  D.3

  28.下列关于虚基类的描述中,错误的是(  )。

  A.使用虚基类可以消除由多继承产生的二义性

  B.构造派生类对象时。虚基类的构造函数只被调用一次

  C.声明“classB:virtualpublicA”说明类B为虚基类

  D.建立派生类对象时,首先调用虚基类的构造函数

  29.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是(  )。

  A.不合法的运算符

  B.一元运算符

  C.无操作数的运算符

  D.二元运算符

  30.有如下模板声明:

  templateclassA;

  下列声明中,与上述声明不等价的是(  )。

  A.templateclassA;

  B.templateclassA;

  C.templateclassA;

  D.templateclassA;

  31.下列关于C++流的描述中,错误的是(  )。

  A.cout>>’A’表达式中输出字符A

  B.eof函数可以检测是否到达文件尾

  C.对磁盘文件进行流操作时,必须包含头文件fstream

  D.以ios_base::Out模式打开的文件不存在时,将自动建立一个新文件

  32.有如下程序:

  #include

  usingnamespacestd;

  classToy{

  public:

  Toy(char*_n){strcpy(name,_n);count++;)

  ~Toy(  ){count一一;)

  char*GetName(  ){returnname;}

  staticintgetCount(  ){returncount;)

  private:

  charname[10];

  staticintcount;

  };

  intToy::count=0;

  intmain(  ){

  Toyt1("snoopy"),t2("Mickey"),t3("Barbie");

  tout

  )

  运行时的输出结果是(  )。

  A.1

  B.2

  C.3

  D.运行时出错

  33.有如下程序:

  #include

  usingnamespacestd;

  classA{

  public:

  A(inti):rl(i){)

  voidprint(  ){cout<<’E’

  intr1:

  };

  intmain(  ){

  Aal(2);constAa2(4);,

  al.print(  );a2.print(  );

  return0;

  }

  运行时的输出结果是(  )。

  A.运行时出错

  B.E2一C16一

  C.C4一Cl6一

  D.E2一E4—

  34.有如下程序:

  #include

  usingnamespacestd;

  className{

  charname[20];

  public:

  Name(  ){

  strcpy(name,"");cout<<’?’;

  }

  Name(char*fname){

  strcpy(name,fname);cout<<’?’;

  }

  };

  intmain(  ){

  Namenames[3]={Name(”张三”),Name(”李四”));

  return0;

  }

  运行此程序输出符号?的个数是(  )。

  A.O

  B.1

  C.2

  D.3

  35.有如下程序:

  #include

  usingnamespacestd;

  classAA{

  public;

  AA(  ){cOUt<<’1’;)

  };

  classBB:publicAA{

  intk;

  public:

  BB(  ):k(0){tout<<’12’;}

  BB(intn):k(n)(cout<<’3’;)

  };

  intmain(  ){

  BBb(4),c;

  return0;

  }

  运行时的输出结果是(  ).

  A.1312

  B.132

  C.32

  D.1412

  36.有如下程序:

  #include

  usingnamespacestd;

  classC1{

  public:

  ~C1(  ){cout<<1;)

  };

  classC2:publicC1{

  public:

  ~C2(  ){cout<<2;)

  };

  intmain(  ){

  C2cb2;

  C1*cb1:

  return0;

  }

  运行时的输出结果是(  )。

  A.121

  B.21

  C.211

  D.12

  37.有如下程序:

  #include

  usingnamespacestd;

  classPublication{//出版物类

  charname[30];

  public:

  Publication(char*name=”未知名称”){

  ~strcpy(this一>name,name);

  }

  constchar*getName(  )const{returnname;}

  virtualconstchar*getType(  )const{return”未知类型”;}

  };

  classBook:publicPublication{//书类

  public:

  Book(char*name):Publication(name){}

  virtualconstchar*getType(  )const{return"书";}

  };

  voidshowPublication(Publication&p){

  cout

  }

  intmain(  ){

  Bookbook(”精彩人生”);

  showPublication(book);

  return0;

  }

  运行时的输出结果是(  )。

  A.未知类型:未知名称

  B.未知类型:精彩人生

  C.书:未知名称

  D.书:精彩人生

  38.下列关于运算符重载的描述中,错误的是(  )。

  A.::运算符不能重载

  B.类型转换运算符只能作为成员函数重载

  C.将运算符作为非成员函数重载时必须定义为友元

  D.重载口运算符应完成“下标访问”操作

  39.有如下程序:

  #include

  #includediomanip>

  usingnamespacestd;

  intmain(  ){

  ints[]={123,234);

  cout

  }

  运行时的输出结果是(  )。

  A.123

  B.***123

  234234

  C.***123

  D.***123

  ***234234***

  40.有如下类定义:

  classA{

  char*a;

  public:

  A(  ):a(O){}

  A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间

  a=__;

  strcpy(a,aa);

  }

  ~A(  ){delete[]a;}

  };

  横线处应填写的表达式是(  )。

  A.Dewchar[strlen(aa)+1]

  B.char[strlen(aa)+1]

  C.char[strlen(aa)]

  D.newchar[sizeof(aa)-1]

  1.C。【解析】队列是一种允许在一端进行插入,而在另一端进行删除的线性表。栈也是一种特殊的线性表,其插入与删除只能在线性表的一端进行。

  2.B。【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。

  3.D。【解析】所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行入队运算时,只要存储空间的第一个位置空闲,可将元素加入到第一个位置,即将存储空闲的第一个位置作为队尾。

  4.A。【解析】一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

  5.B。【解析】耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各个模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

  6.A。【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句等。

  7.C。【解析】N—S图是由若干基本框图构成的流程图,其特点是没有流程线;PAD图即问题分析图(ProblemAnalysisDiagram),它是一种由左往右展开的二维树型结构;程序流程图用于描述问题解决的过程和步骤,其中方框表示处理步骤、菱形框表示逻辑判断、箭头表示控制流向;E—R图即实体一联系图(EntityRelationshipDiagram),用来描述现实世界的概念模型,构成元素有实体、属性和联系,分别用矩形、椭圆形和菱形表示。本题答案为C。

  8.B。【解析】数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

  9.C。【解析】E—R图中用矩形表示实体(等同于表),用椭圆形表示实体的属性(等同于表中字段),用菱形表示实体关系(等同于外键)。

  10.D。【解析】两个相同结构关系的并是由属于这两个关系的元组组成的集合。

  11.D。【解析】重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同或类似的程序段,利用重复结构可以简化大量的程序行。

  12.C。【解析】根据数据结构对栈的定义及其特点可知:栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,对栈的插入与删除操作,不需要改变栈底元素。

  13.D。【解析】数据处理是指将数据转换成信息的过程,故选项A叙述错误;数据的物理独立性是指数据的物理结构的改变不会影响数据库的逻辑结构,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项c叙述错误。

  14.A。【解析】软件概要设计的基本任务是:设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。

  15.D。【解析】在各种排序方法中,快速排序法和堆排序法的平均速度是最快的,因为它们的时间复杂度都是O(nlog2n),其他的排序算法的时间复杂度大都是O(n2)。

  16.D。【解析】主要考查函数调用时,是否设置函数原型。在C++中若被调用的函数放在主调函数之后,需将被调用函数原型放在主调函数之前,否则不需要。

  17.C。【解析】本题主要考查类对象的定义,类的对象一般放在类结构体外或在主函数中定义,而不能放在类定义的结构体中,但自身类的指针可以,本题BBv3不能被定义于类体内。

  18.B。【解析】本题主要考查派生类的继承方式。该题为公有继承,它包含基类中全部数据成员和除了构造、析构函数之外的全部成员函数,本题数据成员的个数即为2。

  19.C。【解析】该题主要考查运算符函数的定义及运算符重载时应注意事项,运算符重载是函数重载的一种特殊情况。

  20.B。【解析】主要考查函数模板的定义。声明一个函数模板的格式为“template<<模板形参表声明>><函数声明>”,其中<模板形参>具有typename<参数名>、class<参数名>、<类型修饰><参数名>三种形式,形参用“<>”括起来。

  21.A。【解析】主要考查文件流的定位问题。冀中iosbase::beg表示相对于文件首,ios_base::cur表示相对于当前位置(负数表示当前位置之前),ios_base::end表示相对于文件尾,ios_base::out表示在文件流的建立中为文件的输出而打开。

  22.D。【解析】标识符主要由数字、字母、下画线组成,且首位必为字母或下画线,同时标识符不能是关键字。

  23.A。【解析】本题主要考查枚举类型的定义,其中几个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,…,n-1对应。由此可判断本题答案。

  24.C。【解析】本题主要考查while的作用。只有i为偶数时才输出“*”,而本题只有2,4,6,8时才满足条件,而当i为10时程序结束,即只有4个“*”被输出。

  25.D。【解析】本题主要考查指针的特殊含义。例*px+1指取px所指对象内容加1,*(px+1)指px指针加1,并取结果指针内容而*px则指px的首元素。

  26.C。【解析】针对递归调用的含义。当n为2时有fib(o),fib(1),fib(2)被调用,且fib(O),fib(1)时调用结束,即共3次。

  27,D。【解析】构造函数在对象被创建时由系统自动调用,本题共创建了3个对象。

  28.C。【解析】本题针对虚基类的定义及特点考查。虚基类的声明为“class<类名>:virtual<继承方式><基类名>”,即本题的A为虚基类。

  29.B。【解析】一元或二元运算符函数作为成员函数时,第一操作数就是对象本身,并不出现在参数表中,即第一操作数仅以this指针的形式隐会于参数表中,因此对于一元运算符参数表是空的;而对于二元运算符参数表中只有一个参数,它代表第二操作数。

  30.D。【解析】模板形参有typename<参数名>、class<参数名>、<类型修饰><参数名>3种形式,即typename与class通用。

  31.A。【解析】在C++中输入用“cin>>”,输出用“<32.C。【解析】析构函数主要用于最后函数的释放空间。本题在已输出t1.getCount()后才调用即不影响所输结果。

  33.B。【解析】const关键字可以用于参与对重载函数的区分。重载的原则是常对象调用常成员函数,一般对象调用一般成员函数。

  34.D。【解析】对有参与无参构造函数的调用。当names[2]为空时调无参构造函数,而names[0],names[1]调用有参构造函数,即输出3个“?”。

  35.A。【解析】当基类的构造函数默认或无参时,派生类可省略对基类构造函数的显示调用,但系统会自动调用该类的缺省构造函数,且先调用基类的构造函数后调用派生类的构造函数。

  36.B。【解析】在基类与派生类中,析构函数在派生类先调用,而本题有两个不同类对象,对于cb2需先调c2的析构函数,再调c1的析构函数。而对于*cb1由于没有指针性析构函数,它将不参加传递数据。

  37.D。【解析】因为getType是虚函数,所以P.getType()执行继承类的getType函数,输出“书”;P.getName()执行基类的getName函数,输出“精彩人生”。总共输出“书:精彩人生”,故选D。

  38.C。【解析】除了·、*、→*、::、?:这五个运算符外,其他运算符都可以重载。=、[]、()、→以及所有的类型转换运算符只能作为成员函数重载。口作为成员函数重载时,应完成“下标访问”操作,使得向指定下标处的元素赋值或取值成为可能。

  39.B。【解析】setw()为填充字符控制,仅对紧接着它的字符起作用,当输出的字符宽度小于setw()预留的字符数时,需用setw()设置的字符给予填充。

  40.A。【解析】对动态分配存储空间的考查,在C++中,回车键需计一字符,即总的长度为strlen(aa)+1。

2014年计算机二级C上机考试试题及答案2

热点推荐

登录注册
触屏版电脑版网站地图