频道栏目
首页 > 考试 > 等级考试 > 二级 > C++ > 正文

2014年计算机二级C++考试专家预测试卷及答案3

2014-03-18 08:30:03           
收藏   我要投稿

选择题(每小题1分,共40小题,共40分) 
  1.下列关于栈的叙述正确的是(  )。  
  A.栈顶元素最先被删除  
  B.栈顶元素最后才能被删除  
  C.栈底元素永远不能被删除  
  D.以上三种说法都不对  
  2.下列叙述中正确的是(  )。  
  A.有一个以上根结点的数据结构不一定是非线性结构  
  B.只有一个根结点的数据结构不一定是线性结构  
  C.循环链表是非线性结构  
  D.双向链表是非线性结构  
  3.某二叉树共有七个结点,其中叶子结点只有一个,则该二叉树的深度为(假设根结点在第1层)(  )。  
  A.3  
  B.4  
  C.6  
  D.7  
  4.在软件开发中,需求分析阶段产生的主要文档是(  )。  
  A.软件集成测试计划  
  B.软件详细设计说明书  
  C.用户手册  
  D.软件需求规格说明书  
  5.结构化程序所要求的基本结构不包括(  )。  
  A.顺序结构  
  B.GOTO跳转  
  C.选择(分支)结构  
  D.重复(循环)结构  
  6.下面描述中错误的是(  )。  
  A.系统总体结构图支持软件系统的详细设计  
  B.软件设计是将软件需求转换为软件表示的过程  
  C.数据结构与数据库设计是软件设计的任务之一  
  D.PAD图是软件详细设计的表示工具  
  7,负责数据库中查询操作的数据库语言是(  )。  
  A.数据定义语言  
  B.数据管理语言  
  C.数据操纵语言  
  D.数据控制语言  
  8.一个教师可讲多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是:(  )。  
  A.1:1联系  
  B.1:m联系  
  C.m:1联系  
  D.m:n联系  
  9.有三个关系R、S和T如下:

  \  
  则由关系R和S得到关系T的操作是(  )。  
  A.自然连接  
  B.交  
  C.除  
  D.并  
  10.定义无符号整数为Uint,下面可以作为类Uint实例化值的是(  )。  
  A.-369  
  B.369  
  C.0.369  
  D.整数集合{1,2,3,4,5}

 11.在对函数进行原型声明时,下列语法成分中,不需要的是(  )。  
  A.函数返回类型  
  B.函数参数列表  
  C.函数名  
  D.函数体  
  12.下列关于this指针的描述中,正确的是(  )。  
  A.类的成员函数都有this指针  
  B.类的友元函数都有this指针  
  C.任何与类相关的函数都有this指针  
  D.类的非静态成员函数都有this指针  
  13.有如下类定义:  
  classAA{  
  inta:  
  public:  
  AA(intn=0):a(n)()  
  };  
  classBB:publicAA{  
  pubilc:  
  BB(intn)____  
  };  
  其中横线处缺失部分是()。  
  A.:a(n){}B.:AA(n){}  
  C.{a(n);}D.{a=n;}  
  14.为类Matrix重载下列运算符号时,只能作为Matrix类成员函数重载的运算符是(  )。 
  A.+  
  B.=  
  C.<<  
  D.++  
  15.下列关于函数模板的描述中,正确的是(  )。  
  A.函数模板是一个实例函数  
  B.使用函数模板定义的函数没有返回类型  
  C.函数模板的类型参数与函数的参数相同  
  D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数  
  16.C++系统预定义了四个用于标准数据流的对象,下列选项中不属于此类对象的是(  )。  
  A.cout  
  B.cin  
  C.cerr  
  D.cset  
  17.Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是(  )。  
  A.cpp  
  B.exe  
  C.obj  
  D.1ik  
  18.若有定义语句“inti=2,j=3;”,则表达式i/j的结果是(  )。  
  A.0  
  B.0.7  
  C.0.66667  
  D.0.66666667  
  19.有如下程序:  
  #include<IOSTREAM data-find="_11">  
  usingnamespacestd;  
  intmain(){  
  intf,f1=0,f2=1  
  for(inti=3;i<=6;i++){  
  f=f1+f2:  
  f1=f2:f2=f  
  }  
  cout<  return0;  
  }  
  运行时的输出结果是()。  
  A.2  
  B.3  
  C.5  
  D.8  
  20.有如下语句序列:  
  intx=100,&r=x;  
  cout<  已知其中变量x的地址为0012FF2C,则执行该语句序列的输出结果为(  )。  
  A.100—100  
  B.100—0012FF7C  
  C.0012FF7C一100  
  D.0012FF7C一0012FF7C
  21.已知函数f的原型是“voidf(int*x,int&y);”,变量v1、v2的定义是“intv1,v2;”,下列调用语句中,正确的是(  )。  
  A.f(v1,v2)  
  B.t(v1,&v2)  
  C.f(&v1,v2)  
  D.f(&v1,&v2);  
  22.有如下类定义:  
  classSample{  
  public:  
  Sample(intx):ref(x){}//①  
  private:  
  Sample():ref(0){}//②  
  staticintva1=5;//③  
  constintref;//④  
  };  
  上述程序段中,错误的语句是(  )。  
  A.①B.②  
  C.③D.④  
  23.有如下程序:  
  #include  
  usingnamespacestd;  
  classPoint{  
  intX,Y;  
  public  
  point(intx1=0,inty1=O)tx(x1),y(y1){}  
  intget(){returnx+y;}  
  };  
  classCircle{  
  pointcenter;  
  intradius;  
  public  
  circle(intCX,intcy,intr):center(cx,cy),radius(r)  
  {}  
  intget(){returncenter.get()+radius;)  
  };  
  intmain(){  
  circlec(3,4,5);  
  cout<  return0;  
  }  
  运行时的输出结果是(  )。  
  A.5  
  B.7  
  C.9  
  D.12  
  24.若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是(  )。  
  A.operatorlong()const;  
  B.operatorlong(BigNumber);  
  C.10ngoperatorlong()const;  
  D.10ngoperatorlong(BigNumber);  
  25.有如下函数模板定义:  
  template  
  T1FUN(T2n){returnn*5,0;}  
  若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为(  )。  
  A.FUN(9)  
  B.FUN<9>  
  C.FUN(9)  
  D.FUN<9>(double)  
  26.下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是(  )。  
  A.cout<  B.cout<  C.cout<  D.cout<  27.下列关于析构函数的描述中,错误的是(  )。  
  A.析构函数可以重载  
  B.析构函数由系统自动调用  
  C.每个对象的析构函数只被调用一次  
  D.每个类都有析构函数  
  28.下列关于构造函数的描述中,错误的是(  )。  
  A.构造函数名与类名相同  
  B.构造函数可以有返回值  
  C.构造函数可以重载  
  D.每个类都有构造函数  
  29.若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是(  )。  
  A.0  
  B.1  
  C.2  
  D.3  
  30.有如下程序:  
  ClassBase{  
  public:  
  intdata;  
  };  
  ClassDerived1:publicBase{};  
  ClassDerived2:protectedBase{};  
  intmain(){  
  Derived1d1;  
  Derived2d2;  
  d1.data=0;//①  
  d2.data=0;//②  
  return0;  
  }  
  下列关于程序编译结果的描述中,正确的是(  )。  
  A.①②皆无编译错误  
  B.①有编译错误,②无编译错误  
  C.①无编译错误,②有编译错误  
  D.①②皆有编译错误
  31.有如下程序;  
  #include  
  usingnamespacestd;  
  clasBasel{  
  public:  
  Basel(intd){cout<  -Basel(){}  
  };  
  classBase2{  
  public:  
  Base2(intd){out<  ~Base2(){}  
  };  
  classDerived:publicBase1,Base2{  
  public:  
  Derived(inta,intb,intC,intd):  
  Basel(b),Base2(a),b1(d),b2(c){}  
  private:  
  intb1;  
  intb2;  
  };  
  intmain(){  
  Derivedd(1,2,3,4);  
  return0;  
  }  
  运行时的输出结果是(  )。  
  A.1234  
  B.2134  
  C.12  
  D.21  
  32.有如下程序:  
  #include  
  usingnamespacestd;  
  classBase{  
  public:  
  virtualvoidfunctionl(){cout<<’0’;}  
  voidfunction2(){out<<’1’;}  
  };  
  classDerived:publicBase{  
  oublic:  
  voidfunctionl(){cout<<’2’;}  
  voidfunction2(){cout<<’3’;}  
  };  
  intmain(){  
  Base*p=newDerived();  
  p->functionl();  
  p->function2();  
  return0;  
  }  
  运行时的输出结果是(  )。  
  A.01  
  B.21  
  C.03  
  D.23  
  33.有如下类模板定义:  
  template  
  classBigNumber{  
  longn;  
  public;  
  BigNumber{Ti}:n(i){}  
  BigNumberoperator+(BigNumberb){  
  returnBigNumber{n+b.n);  
  }  
  };  
  已知b1、b2是BigNumber的两个对象,则下列表达中踏误的是(  )。  
  A.b1+b2  
  B.b1+3  
  C.3+b1  
  D.3+3  
  34.下列关于文件流的描述中,正确的是(  )。  
  A.文件流只能完成针对磁盘文件的输入、输出  
  B.建立一个文件流对象时,必须同时打开一个文件  
  C.若输入流要打开的文件不存在,将建立一个新文件  
  D.若输出流要打开的文件不存在,将建立一个新文件  
  35.有如下程序:  
  #include  
  usingnamespacestd;  
  classPair{  
  intm,n;  
  public;  
  Pair(intj,intk):m(j),n(k){}  
  intget(){returnm;}  
  intget()const{returnm+n;}  
  };  
  intmain(){  
  Paira(3,5);  
  constPairb(3,5);  
  cout<   return0;  
  }  
  运行时的输出结果是(  )。  
  A.33  
  B.38  
  C.83  
  D.88  
  36.有如下程序:  
  #include  
  usingnamespacestd;  
  voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){  
  intx=10,y=26;  
  f1(x,y);  
  f2(x,y);  
  cout<  return0;  
  }  
  运行时的输出结果是(  )。  
  A.10  
  B.16  
  C.26  
  D.36  
  37.有如下程序:  
  #include  
  usingnamespacestd;  
  classXA{  
  inta;  
  public:  
  staticintb;  
  XA(intaa):a(aa){b++;}  
  ~XA(){}  
  intget(){returna;}  
  };  
  intXA::b=0  
  intmain(){  
  XAd1(1),d2(3);  
  cout<  return0;  
  }  
  运行时的输出结果是(  )。  
  A.5  
  B.6  
  C.7  
  D.8  
  38.有如下程序:  
  #include  
  usingnamespacestd;  
  classPoint{  
  intX,y;  
  public:  
  Point(intx1=0,inty1=0):X(x1),y(y1){}  
  intget(){returnx+y;}  
  };  
  classCircle{  
  Pointcenter;  
  intradius;  
  public:  
  Circle(intCX,intcy,intr):center(CX,cy),radius(r)  
  {}  
  intget(){returncenter.get()+radius;}  
  };  
  intmain(){  
  Circlec(3,4,5);  
  cout<  return0;  
  }  
  运行时的输出结果是(  )。  
  A.5  
  B.7  
  C.9  
  D.12  
  39.若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是(  )。  
  A.operatorlong()const;  
  B.operatorlong(BigNumber);  
  C.10ngoperatorlong()const;  
  D.longoperatorlong(BigNumber);  
  40.有如下函数模板定义:  
  template  
  T1FUN(T2n){returnn*5,0;}  
  若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为(  )。  
  A.FUN(9)  
  B.FUN<9>  
  C.FUN(9)  
  D.FUN<9>(double)
  1.A。【解析】栈是限定在一端进行插入删除的先入后出的线性表数据结构,栈顶元素最后被插入到栈中,但是最先被删除;而栈底元素最先被插入,最后被删除。  
  2.D。【解析】线性表的特点是:在数据元素的非空有限集合中1)存在唯一的一个被称为”第一个”的数据元素2)存在唯一个被称为”最后一个”的数据元素3)除第一个以外,集合中的每个数据元素均只有一个后继4)除最后一个以外,集合中的每个数据元素均只有一个后继。因此,双向表是非线性结构。  
  3.D。【解析】对于任意一棵二叉树T,如果叶子节点数为nO,度为2的结点数为n2,二者之间的关系是nO=n2+1,该题中度为2的结点数为0,且只有一个叶子节点,因此,树中度为1的结点有6个,很容易想到树的深度为7。  
  4.D。【解析】需求分析阶段只能产生需求分析规格说明书,A测试说明书是软件测试阶段生成的,B软件详细设计说明数是设计阶段生产,C用户手册是软件发布时随软件一同交付给用户的。  
  5.B。【解析】结构化程序设计的三种结构是顺序、分支和循环,不包括goto跳转,它只是分支结构的一种,也是一个关键字。  
  6.A。【解析】软件系统的总体结构图是软件架构设计的依据,它并不能支持软件的详细设计。  
  7.C。【解析】数据库操纵语言专门负责查询,增加,删除等数据操作。  
  8.D。【解析】一个教师可以上多门课程,一门课程也可以由多个教师教授,这是典型的多对多的E-R关系。  
  9.C。【解析】S中的关系全部出现在R中,只有做除法操作才会出现关系T。  
  10.B。【解析】A是有符号数,C是浮点数,D是集合,并不是类的实例化对象,只有B完全符台。  
  11.D。【解析】函数声明的时候,是不需要实现部分的,也就是函数体。  
  12.D。【解析】类的非静态成员都是有this指针的。可以通过obj非静态成员访问。  
  13.B。【解析】需要实现父类构造函数。  
  14.B。【解析】赋值运算符只能作为重载函数的成员函数,其他运算符都可以作为友元函数重载。  
  15.D。【解析】函数模板只是声明,一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。  
  16.D。【解析】C++的标准数据流对象有三个:cout标注输出流,ein标准输入流,cerr标准错误流。  
  17.C。【解析】cpp是C++源文件的扩展名,exe是可执行文件的扩展名,lik是链接文件的的扩展名。  
  18.A。【解析】整数相除为整数,所以结果为0。  
  19.C:【解析】循环3次,分别每次计算出fl,f2和f的值,该题较简单,只需细心即可。  
  20.B。【解析】x的值为100,而r代表x的地址。&r=x等同于r=*X。   21.B。【解析】voidf(int*X,int&。y);第一个参数需要取值,第二个参数需要取地址,所以为v1为取值,&Lv2为取址。  
  22.C。【解析】应为“staticconstintval一5;”,只有静态常量才可以初始化。  
  23.D。【解析】简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3和4的和被返回接着再调用Circle类的radius成员交量5相加后得到12。  
  24.A。【解析】C++不仅可以对运算符进行重载,还可以重载类型转换符,函数声明的形式勾operator类型符()const。  
  25.C。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。  
  26.D。【解析]setw(6)将输出宽度设为6,如果位数不够则在最左边补齐,因此该项输出一定不会与其他三项一致。  
  27.A。【解析】析构函数不能被重载,因为它的函数中不带有任何参数,也没有任何返回值,函数只有一个版本,即~类名(){}。  
  28.B。【解析】构造函数没有返回值,虽然叫函数但是它没有任何返回值,包括void型都不是,官方叫法为“构造器”。  
  29.A。【解析]PAT(*ad){3);该表达式表示一个指向类PAT的数组的指针,只是声明了该指针,而并没有进行实例化对象,因此该语句运行时并不会调用构造函数。  
  30.C。【解析]Derived2继承Base的方式为protected,则Base的public成员只能在Base内访问。  
  31.D。【解析】多继承构造函数执行的顺序为继承时的顺序。所以答案为D。Derived(inta,intb,intC,intd):Basel(b),Base2(a),bl(d),b2(c)的含义是:构造函数Basel的参数值为b,构造函数Base2的参数值为a。成员变量b1,b2的值分别为d、C。  
  32.B。【解析】本题中需要注意的是虚函数的定义:指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。所以P->functionl();会指向实现类Derived,而P->function2()则会指向Base。  
  33.C。【解析】该题考查了C++模板类和+运算符重载的知识,3+b1时,程序不能将b1转化为整型,所以编译会出错。  
  34.C。【解析】输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。  
  35.B。【解析】eonst函数只能被eonst对象调用,a.get()函数调用的返回值是3,而b.get()调用的返回值是8。  
  36.A。【解析】该题考查了函数参数传递的两种方式:引用传递和值传递。引用传递时X和Y会交换,而传值时二者不交换,因此选10。  
  37.C。【解析】每调用一次get函数时,对新的类A对象进行一次实例化,调用一次构造函数,类A的静态成员变量b便加1。  
  38.D。【解析】简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3和4的和被返回,接着再调用Circle类的radius成员变量5相加后得到12。  
  39.A。【解析】C++不仅可以对运算符进行重载,还可以重载类型转换符,函数声明的形式为:operator类型符()const。  
  40.C。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。
上一篇:2014年计算机二级C++考试专家预测试卷及答案6
下一篇:2014年3月计算机二级C++真题及答案(网友版)
相关文章
图文推荐
文章
推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站