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

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

2017-5-22编辑:daibenhua

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

  1.下列关于栈叙述正确的是(  )。

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

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

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

  D.以上三种说法都不对

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

  A.有一个以上根结点的数据结构不一定是非线性结构

  B.只有一个根结点的数据结构不一定是线性结构

  C.循环链表是非线性结构

  D.双向链表是非线性结构

  3.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)(  )。

  A.3

  B.4

  C.6

  D.7

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

  A.软件集成测试计划

  B.软件详细设计说明书

  C.用户手册

  D.软件需求规格说明书

  5.结构化程序所要求的基本结构不包括(  )。

  A.顺序结构

  B.GOT0跳转

  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.有3个关系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.若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为(  )。

  A.a

  B.AA.a

  C.a{}

  D.AA:a{}

  13.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是(  )。

  A.任何

  B.公有或保护

  C.保护或私有

  D.私有

  14.若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是(  )。

  A.Data+(Data);

  B.Dataoperator+(Data);

  C.Data+operator(Data);

  D.operator+(Data.Data);

  15.下列关于函数模板的描述中,正确的是(  )。

  A.函数模板是一个实例函数

  B.使用函数模板定义的函数没有返回类型

  C.函数模板的类型参数与函数的参数相同

  D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数

  16.C++系统预定义了3个用于标准数据流的对象,下列选项中不属于此类对象的是(  )。

  A.cout

  B.cin

  C.cerr

  D.cset

  17.Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是(  )。

  A.cpp

  B.exe

  C.obj

  D.lik

  18.字符串“a+b=12\n\t”的长度为(  )。

  A.12

  B.10

  C.8

  D.6

  19.有如下程序:

  #include

  usingnamespacestd;

  intmain(  ){

  intf,f1=0,f2=1;

  for(inti=3;i<=6;i++){

  f=f1+f2:

  f1=f2;f2=f;

  }

  cout

  }

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

  A.2

  B.3

  C.5

  D.8

  20.有如下程序:

  #include

  usingnamespacestd;

  intmain(  ){

  inta[6]={23,15,64,33,40,58};

  ints1,s2;

  s1=s2=a[0];

  for(int*p=a+1;pif(s1>*p)s1=*p;

  if(s2<*p)s2=*p;

  }

  cout

  }

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

  A.23

  B.58

  C.64

  D.79

  21.有如下程序:

  #included

  usingnamespacestd;

  voidfl(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

  }

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

  A.10

  B.16

  C.26

  D.36

  22.有如下程序:

  #include

  usingnamespacestd;

  classXA{

  inta;

  public:

  staticintb;

  XA(intaa):a(aa){b++;}

  ~XA(  ){}

  intget(  ){returna;}

  };

  intXA::b=0

  intmain(  ){

  XAd1(1),d2(3);

  cout

  }

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

  A.5

  B.6

  C.7

  D.8

  23.有如下程序:

  #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

  }

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

  A.5

  B.7

  C.9

  D.12

  24.若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是(  )。

  A.operatorlong(  )const;

  B.operatorlong(BigNumber);

  C.longoperatorlong(  )const;

  D.longoperatorlong(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.下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他3条语句不同,该语句是(  )。

  A.cout

  A.析构函数可以重载

  B.析构函数由系统自动调用

  C.每个对象的析构函数只被调用一次

  D.每个类都有析构函数

  28.下列关于构造函数的描述中,错误的是(  )。

  A.构造函数名与类名相同

  B.构造函数可以有返回值

  C.构造函数可以重载

  D.每个类都有构造函数

  29.若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是(  )。

  A.0

  B.1

  C.2

  D.3

  30.下列描述中,错误的是(  )。

  A.公有继承时基类中的公有成员在派生类中仍是公有成员

  B.公有继承时基类中的保护成员在派生类中仍是保护成员

  C.保护继承时基类中的公有成员在派生类中仍是公有成员

  D.保护继承时基类中的保护成员在派生类中仍是保护成员

  31.生成派生类对象时,派生类构造函数调用基类构造函数的条件是(  )。

  A.无需任何条件

  B.基类中显式定义了构造函数

  C.派生类中显式定义了构造函数

  D.派生类构造函数明确调用了基类构造函数

  32.下列关于派生类和基类的描述中,正确的是(  )。

  A.派生类成员函数只能访问基类的公有成员

  B.派生类成员函数只能访问基类的公有和保护成员

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

  D.派生类对基类的默认继承方式是公有继承

  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(  ){returnIn;}

  intget(  )const{returnm+n;}

  };

  intmain(  ){

  Paira(3,5);

  constPairb(3,5);

  cout

  }

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

  A.33

  B.38

  C.83

  D.88

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

  A.全局变量的作用域一定比局部变量的作用域范围大

  B.静态类别变量的生存期贯穿于整个程序的运行期间

  C.函数的形参都属于全局变量

  D.未在定义语句中赋初值的aut0变量和static变量的初值都是随机值

  37.假定MyClass为一个类,则执行MyClassa,b(2),*p;语句时,自动调用该类构造函数(  )次。

  A.2

  B.3

  C.4

  D.5

  38.能正确表示逻辑关系”a≥10或a≤0”的C++语言表达式是(  )。

  A.a>=10ora<=0

  B.a)一01a(一10

  C.a>=10&&a<=0

  D.a>=10||a(=0

  39.若执行下面的程序时,从键盘上输入5和2,则输出结果是(  )。

  #include(iostream.h)

  voidmain(  )

  (inta,b,k;

  cin>>a>>b;

  k=a:

  if(ak=a%b;

  else

  k=b%a:

  cout((k

  B.3

  C.2

  D.0

  40.假定MyClass为一个类,那么下列的函数说明中,(  )为该类的析构函数。

  A.void~MyClass(  );

  B.~MyC|ass(intn);

  C.MyClass(  );

  D.~MyClass(  );

  1.A。【解析】栈是限定在一端进行插入删除的先入后出的线性表数据结构,栈顶元素最后被插入到栈中,但是最先被删除;而栈底元素最先被插入,最后被删除。

  2.D。【解析】线性表的特点是在数据元素的非空有限集合中①存在唯一的一个被称为“第一个”的数据元素;②存在唯一一个被称为“最后一个”的数据元素;③除第一个以外,集合中的每个数据元素均只有一个后继;④除最后一个以外,集合中的每个数据元素均只有一个后继。因此,双向表是非线性结构。

  3.D。【解析】对于任意一棵二叉树T,如果叶子结点数为n0,度为2的结点数为n2,二者之间的关系是n0=n2+1,该题中度为2的结点数为0,且只有一个叶子结点,因此,树中度为1的结点有6个,很容易想到树的高度为7。

  4.D。【解析】需求分析阶段只能产生需求分析规格说明书。A测试说明书是软件测试阶段生成的;B软件详细设计说明书是设计阶段生成;C用户手册是软件发布时随软件一同交付给用户的。

  5.B。【解析】结构化程序设计的3种结构是,顺序、分支和循环,不包括goto跳转,它只是分支结构的一种,也是一个关键字。

  6.A。【解析】软件系统的总体结构图是软件架构设计的依据,它并不能支持软件的详细设计。

  7.C。【解析】数据库操纵语言专门负责查询、增加、删除等数据操作。

  8.D。【解析】一个教师可以上多门课程,一门课程也可以由多个教师教授,这是典型的多对多的E—R关系。

  9.C。【解析】S中的关系全部出现在R中,只有做除法操作才会出现关系T。

  10.B。【解析】A是有符号数,C是浮点数,D是结合并不是类的实例化对象,只有B完全符合。

  11.A。【解析】内联函数一般是程序代码少于10行的函数,在编译过程中,直接在调用点处被展开,不会因函数调用带来巨大的系统开销,因此能提高实际运行速度。

  12.A。【解析】a是类AA的非静态数据成员,在类AA的成员函数中可以直接访问。B是访问静态数据成员的方式,C和D都是访问函数的方式。

  13.B。【解析】保护继承时基类的public和proteeted是保护的,私有继承时基类的public和protected是私有的。

  14.B:【解析】重载运算符的函数一般格式如下:函数类型0perator运算符名称(形参列表)因此选B。

  15.D。【解析】函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型参数标识符之后,才能产生真正的函数。

  16.D。【解析】C++的标准数据流对象有3个:cout标注输出流,cin标准输入流,cerr标准错误流。

  17.C。【解析】cpp是C++源文件的扩展名;exe是可执行文件的扩展名;lik是连接文件的扩展名。

  18.C。【解析】\n表示回车,\t是制表符。

  19.C。【解析】循环3次,分别每次计算出f1,f2和f的值,该题比较简单,只需要细心即可。

  20.D。【解析】根据程序的意思,找出数组a中最大值s1和最小值s2并计算二者的和。

  21.A。【解析】该题考查了函数参数传递的两种方式:引用传递和值传递,引用传递时x和y会交换,而值传递时二者不交换,因此选10。

  22.C。【解析】每调用一次get函数时,对新的类A对象进行一次实例化,调用一次构造函数,类A的静态成员变量b便加1。

  23.D。【解析】简单类之间继承关系的调用,按照通常做法便可以得到答案。center.get()函数调用后,3和4的和被返回,接着再调用Circle类的radius成员变量5相加后得到12。

  24.A。【解析】C++不仅可以对运算符进行重载,还可以重载类型转换符,函数声明的形式为:0perator类型符()const。

  25.C。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。

  26.D。【解析】setw(6)将输出宽度设为6,如果位数不够,则在最左边补齐,因此该项输出一定不会与其他3项一致。

  27.A。【解析】析构函数不能被重载,因为它的函数中不带有任何参数,也没任何返回值,函数只有一个版本即“~类名(){}”。

  28.B。【解析】构造函数没有返回值,虽然叫函数,但是它没有任何返回值,包括void型都不是,官方叫法应该叫“构造器”。

  29.A。【解析】PAT(*ad){3}该表达式表示一个指向类PAT的数组的指针,只是声明了该指针,而并没有进行实例化对象,因此该语句运行时并不会调用构造函数。

  30.C。【解析】保护继承时,类成员的访问级别只能是降低为保护模式,因此即使基类的公有成员,也被缩小为保护模式。

  31.D。【解析】派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以在定义派生类的构造函数时,除了对自己的类据成员进行初始化外,还必须负责调用基类构造函数,使基类的数据成员得以初始化。

  32.B。【解析】派生类成员函数不能访问基类的private成员,只能由基类的对象来访问。这才体现了C++的数据封装特性。

  33.C。【解析】该题考查了C++模板类和+运算符重载的知识,3+b1时,程序不能将b1转化为整型,所以编译会出错。

  34.C。【解析】输入流要打开的文件不存在,则会自动建立该文件,而输出流要打开的文件不存在,则会报错,而不会新建一个文件。

  35.B。【解析】const函数只能被const对象调用,a.get()函数调用返回值是3,而b.get()调用的返回值是8。

  36.B。【解析】本题考查的是变量的作用域及其生存周期。一个全局变量的生存周期从它被声明开始,直到程序结束;一个局部变量的生存周期从它被声明开始,直到包含它的最近的一个程序块结束。静态变量的生存周期将延续到整个程序的终止。

  37.A。【解析】C++在创建一个对象时,会调用类的构造函数。执行MyClassab,(2),*P;创建了两个对象a、b和指针P,在创建对象a和b会调用构造函数,而创建指针P时,由于P本身不是对象,所以不调用类的构造函数。

  38.D。【解析】逻辑运算符“‖”表示或的意思。

  39.C。【解析】本题考查简单的if…else语句。先执行条件if(a40.D。【解析】C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。

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

热点推荐

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