当前位置:首页 > 全部子站 > IT > 等级考试

2018年9月计算机二级C++考试冲刺必做题及答案(2)

来源:长理培训发布时间:2018-09-14 12:23:14

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

  1 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.3

  B.5

  C.6

  D.编译出错

  参考答案:C

  参考解析:

  题意中,add()函数接收3个double类型的参数,最后一个形参e具有默认值1,函数将三个参数相加,返回相加的结果;main()函数中,调用add()函数,传人两个参数,所以形参c使用默认值1,对应参数的值为:2,3,1,函数将a、b、c转换为double类型后,相加,并将结果6.0作为函数值返回,返回值转换为int赋给result,最终输出result的值。本题答案为C选项。

  2 [单选题] 下列关于类定义的说法中,正确的是( )。

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

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

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

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

  参考答案:A

  参考解析:

  类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。

  3 [单选题] 必须用一对大括号括起来的程序段是( )。

  A.switch语句中的case标号语句

  B.if语句的分支

  C.循环语句的循环体

  D.函数的函数体

  参考答案:D

  参考解析:

  本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。

  4 [单选题] 计算数列第n项的函数定义如下:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  若执行函数调用表达式fa(4)时,返回的函数值为( )。

  A.53

  B.17

  C.23

  D.49

  参考答案:A

  参考解析:

  题意中fa()函数是一个递归函数,当参数n大于1时,函数返回值为3*fa(n-1)+2,当n等于1时,函数返回值为1,所以fa(4)=3*fa(3)+2=3*(3$fa(2)+2)+2=3*(3*(3*fa(1)+2)+2)+2=3*(3*(3+2)+2)+2=53。本题答案为A选项。

  5 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.Book:C++

  B.Book:Unknown

  C.Unknown:C++

  D.Unknown:Unknown

  参考答案:A

  参考解析:

  C++中,多态调用必须满足两个条件:被调用的成员函数是虚函数;必须通过基类类型的引用或指针进行函数调用。 题意的main()函数中首先定义一个Book类对象,对象名为book,在构造book对象时,程序过程如下:首先调用Book类的构造函数,传人参数“C++”,在构造函数执行函数体前,再调用基类Publication的默认构造函数:传入字符串“C++”,基类构造函数在成员初始化列表中,使用传人的参数“C++”为name赋值;此时继承于基类的成员:name存放字符串“C++”。

  然后main()函数调用showPublication()函数,传人book对象:showPublication()函数接收Publication类对象的引用p,然后调用p.getType()和p.getName()输出。由于getType()成员函数属于虚函数,p属于基类对象的引用,所以通过p调用getType()函数满足多态调用,执行p实际引用对象类型的getType(),即Book类的getType(),输出:“Book”;而getName()不是成员函数,所以不满足多态调用,执行基类的成员函数getName(),输出name:“c++”。综上,程序输出:Book:C++。本题答案为A选项。

  6 [单选题] 有如下程序:

  

2018年9月计算机二级C++考试冲刺必做题及答案(2)


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

  A.375

  B.357

  C.0375

  D.0357

  参考答案:C

  参考解析:

  本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象d1,先执行基类的构造函数输出0,再执行派生类的构造函数输出3,然后定义了一个对象d2(5,7),其中需要调用基类的构造函数输出7,最后输出5,所以答案为C。

  7 [单选题] 软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。

  A.学生成绩管理系统

  B.C语言编译程序

  C.UNIX操作系统

  D.数据库管理系统

  参考答案:A

  参考解析:

  软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、C、D都是系统软件,只有A是应用软件。

  8 [单选题] 下列程序的运行结果是( )。

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  A.00

  B.23

  C.34

  D.25

  参考答案:B

  参考解析:

  本题考查的是对构造函数的掌握,另外“++”运算符是右结合的,所以在进行输出的时候都是先把原来的输出后再自加1。

  9 [单选题] 关系数据模型的三个组成部分中不包括( )。

  A.关系的完整性约束

  B.关系的数据操纵

  C.关系的数据结构

  D.关系的并发控制

  参考答案:D

  参考解析:

  关系数据模型的三个组成部分:数据结构,操作集合(数据操纵),完整性约束。故本题答案为D选项。

  10 [单选题] 关于函数重载,下列叙述中错误的是( )。

  A.重载函数的函数名必须相同

  B.重载函数必须在参数个数或类型上有所不同

  C.重载函数的返回值类型必须相同

  D.重载函数的函数体可以有所不同

  参考答案:C

  参考解析:

  所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为C。

  11 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.2351

  B.2531

  C.5354

  D.5534

  参考答案:B

  参考解析:

  main()函数中调用了B的构造函数,参数为5,接下来B类对象b的构造过程如下:①调用基类A的默认构造函数,构造对象b的基类部分:初始化m_i为2。②按照B类中成员的定义顺序,使用成员初始化列表初始化两个A类成员:首先执行m_a1(m_i+1),m_i为基类A中的成员,此时值为2,调用A类的默认构造函数,初始化m_a1.m_i为3;然后执行m_a2(n),调用A类的默认构造函数,初始化m_a2.m_i为5。接着main()执行return语句,此时对象b需要调用析构函数进行释放,释放过程如下:①首先运行B类的析构函数-B(),输出m_i的值为2,然后将m_i自减1,使得m_i的值为1。②按照8类中成员定义顺序的反顺序,首先调用m_a2的析构函数~A(),释放对象m a2,输出m_a2.m_i的值5;再调用m_a1的析构函数~A(),释放对象m_a1,输出m_a1.m_i的值3。③最后调用基类A的析构函数-A(),释放b对象中的基类部分,输出m_i的值1。 由上分析,程序运行结果为:2531。故本题答案为B选项。

  12 [单选题] 有如下程序段:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  上述程序使得derived对象中的动态内存空间有可能不被释放,有内存泄漏风险,原因是( )。

  A.base类是抽象类

  B.derived类的析构函数没有释放基类的动态内存

  C.base类的析构函数不是虚函数

  D.derived类的resoulce与公有继承得到的resource同名

  参考答案:C

  参考解析:

  基类base中的数据成员resource为整型指针变量,派生类derived中的数据成员resource与基类base中的同名,但类型为浮点型指针变量,基类base中构造函数使用new为resource(整型指针)分配了内存空间,在析构函数中释放;派生类derived的构造函数在成员初始化类表中调用base的构造函数构造对象的基类部分,然后在构造函数体内使用new为resource(浮点型指针)分配了内存空间,在析构函数中释放浮点型resource指针;由于基类base中的析构函数未定义为虚函数,所以派生类derived中的析构函数在被调用时,不会再调用基类base中的析构函数,导致基类base中的整型指针变量resource无法释放,造成内存泄漏。故本题答案为C选项。

  13 [单选题] 下列关于抽象类的叙述中,错误的是( )。

  A.不能定义抽象类对象

  B.抽象类中一定包含纯虚函数

  C.抽象类的派生类一定不是抽象类

  D.抽象类的构造函可以是protected函数

  参考答案:C

  参考解析:

  含有一个或多个纯虚函数的类是抽象类,不能创建抽象类的对象,选项A、B正确;由于无法创建(也不需要创建)抽象类的对象,所以抽象类的构造函数可以是protected函数,选项D正确;抽象类的派生类,如果也包含纯虚函数,那么该派生类也是抽象类,选项C错误。故本题答案为C选项。

  14 [单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。

  A.一对一

  B.一对多

  C.多对多

  D.多对一

  参考答案:C

  参考解析:

  因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。

  15 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.1B

  B.1D

  C.2B

  D.2D

  参考答案:B

  参考解析:

  在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义了一个指向派生类对象的基类指针ptr,执行ptr->output后,会执行基类的output函数,输出1,由于Print是虚函数,所以ptr->Print()会执行派生类的Print,即输出D,所以本题答案为B。

  16 [单选题] 层次型、网状型和关系型数据库划分原则是( )。

  A.记录长度

  B.文件的大小

  C.联系的复杂程度

  D.数据之间的联系方式

  参考答案:D

  参考解析:

  层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。

  17 [单选题] C++中的模板包括( )。

  A.对象模板和函数模板

  B.对象模板和类模板

  C.函数模板和类模板

  D.变量模板和对象模板

  参考答案:C

  18 [单选题] 现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,Date为就诊日期,Rt为诊断结果。检索在1号医生处就诊的病人姓名的表达式是( )。

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  参考答案:A

  参考解析:

  π表示投影运算,针对属性;σ表示选择运算,针对元组;▷◁表示自然连接。首先在Tr表中选择D#为1的记录σD#=1(Tr),并检索这些记录中患者的编号πp#(σD#=1(Tr)),检索结果与表P进行自然连接生成中间表计πP#(σD#=1(Tr))▷◁P,最后在中间表中检索患者的姓名πPn(πP#(σD#=1(Tr))▷◁P)。故本题答案为A选项。

  19 [单选题] 下列选项中不属于结构化程序设计原则的是( )。

  A.可封装

  B.自顶向下

  C.模块化

  D.逐步求精

  参考答案:A

  参考解析:

  结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

  20 [单选题] 已知函数模板定义如下:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  不能由该函数模板得到的函数实例是( )。

  A.int min(int,int)

  B.char min(char,char)

  C.double min(int,double)

  D.double min(double,double)

  参考答案:C

  参考解析:

  题意中的模板函数min()接收两个参数,参数类型都是T,返回一个T类型的值,所以min()函数的参数、返回值都必须是同一类型,由此可知选项A、B、D可正确得到函数实例,选项C不可以。故本题答案为C选项。

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

  A.3

  B.4

  C.6

  D.7

  参考答案:D

  参考解析:

  根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。

  22 [单选题] 如下函数模板:

  templateT square(T x){return x*x;}

  其中T是( )。

  A.函数形参

  B.函数实参

  C.模板形参

  D.模板实参

  参考答案:C

  参考解析:

  本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。

  23 [单选题] 下列运算符中,可以重载为非成员函数的是( )。

  A.=

  B.>>.

  C.[]

  D.( )

  参考答案:B

  参考解析:

  赋值操作符=、下标操作符[]和箭头操作符->必须定义为类成员函数,而输入输出操作符可以定义为非成员函数。故本题答案为B选项。

  24 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.5:4 20.52

  B.5:4 20:52

  C.5,4 20,52

  D.5,4 20:52

  参考答案:A

  参考解析:

  c++中,eonst对象只能使用eonst成员函数,非eonst对象可以使用任一成员;题意中两个print()函数属于基于cons|的重载函数,所以对于非eonst对象a,调用非eonst的成员函数print(),输出:5:4;对于cons|对象b,输出:20,52。故本题答案为A选项。

  25 [单选题] 下列有关指针的操作中,正确的是( )。

  A.int a=10;void*ptr=&a;cout<<*(ptr);

  B.int * ptr=new int[10];delete ptr;

  C.i.t Array[4];*(Array+3)=10;

  D.int*ptr=new int*[10];

  参考答案:C

  参考解析:

  变量a是整型,所以地址为整型指针,不能赋给void*类型,选项A错误;使用new分配数组空间时,必须使用delete[]来释放数组空间,选项B错误;new int$[10]是分配了l0个整型指针数组,数组的每个元素都是整型指针,它无法赋给整型指针变量ptr,选项D错误。本题答案为C选项。

  26 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.CCCC

  B.CCC

  C.CC

  D.C

  参考答案:B

  参考解析:

  本题考查类的析构函数,题目中定义了类的一个对象a,对象指针*b,对象数组d[2],当程序执行完后,析构函数执行了3次,输出“CCC”,对象指针不会执行析构函数。所以本题答案为B。

  27 [单选题] 下列符号中能够作为C++标识符的是( )。

  A.const

  B.2a

  C._shape

  D.-count

  参考答案:C

  参考解析:

  本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符”-”,且不能以此字符开头。故答案为C。

  28 [单选题] 下列关于运算符函数的描述中,错误的是( )。

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

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

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

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

  参考答案:C

  参考解析:

  运算符函数可以定义为类的友元函数。所以C选项错误。

  29 [单选题] 如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是( )。

  A.public和public

  B.public和protected

  C.protected和public

  D.protected和protected

  参考答案:D

  参考解析:

  本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。

  30 [单选题] 当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。

  A.公有成员

  B.私有成员

  C.保护成员

  D.友元

  参考答案:B

  参考解析:

  C++中,对于公有继承,基类成员保持自己的访问级别:基类的public成员为派生类的public成员,基类的protected成员为派生类的proteeted成员,基类的private成员对派生类不可见,所以:在公有继承中,基类中的公有成员对派生类对象可见,基类中的私有成员对派生类对象不可见;对于私有继承,基类的public和protected成员在派生类中为private成员,基类的private成员对派生类不可见,选项B正确。本题答案为B选项。

  31 [单选题] 有如下枚举类型定义:

  enum DAY{SUN,MON=10,TUE,WED,THU,FRI=20,SAT};

  执行下列程序段

2018年9月计算机二级C++考试冲刺必做题及答案(2)

  输出字符'a'的个数是( )。

  A.13

  B.16

  C.19

  D.22

  参考答案:A

  参考解析:

  枚举类型中,如果当前枚举成员的值显示初始化,那么后一个枚举成员的值比当前枚举成员的值大1,所以枚举类型DAY中,SUN的值为0,NON的值显示为10,TUE的值为11,WED的值为12,THU的值为13,FR1的值显示初始化为20,SAT的值为21,所以for循环会执行13次,输出13个字符'a'。本题答案为A选项。

  32 [单选题] 要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是( )。

  A.ifstream fin=ifstream.open(”file.dat”);

  B.ifstream*fin=new ifstream(”file.dat”);

  C.ifstream fin;fin.open(”file.dat”);

  D.ifstream*fin=new ifstream( );fin->open(”file.dat”);

  参考答案:A

  参考解析:

  本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般形式如下:文件流对象.open(磁盘文件名,输入/输出方式)。根据以上格式,可以判断A选项错误。

  33 [单选题] 下列有关继承和派生的叙述中,正确的是( )。

  A.派生类不能访问基类的保护成员

  B.作为虚基类的类不能被实例化

  C.派生类应当向基类的构造函数传递参数

  D.虚函数必须在派生类中重新实现

  参考答案:C

  参考解析:

  派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。

  34 [单选题] 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。

  A.Value operator+(Value v,int i);

  B.Value operator+(Value v=value,int i);

  C.Value operator+(Value v,int i=0);

  D.Value operator+(Value v=value,int i=0);

  参考答案:A

  参考解析:

  本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为A。

  35 [单选题] 下列关于虚函数的说明中,正确的是( )。

  A.从虚基类继承的函数都是虚函数

  B.虚函数不得是静态成员函数

  C.只能通过指针或引用调用虚函数

  D.抽象类中的成员函数都是虚函数

  参考答案:B

  参考解析:

  在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。

  36 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  A.1111

  B.1211

  C.1112

  D.1212

  参考答案:C

  参考解析:

  本题主要考察虚函数。虚函数指在某基类中声明为viltual并在一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。

  37 [单选题] 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。

  A.1:1联系

  B.1:m联系

  C.m:1联系

  D.m:n联系

  参考答案:D

  参考解析:

  因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授,所以他们之间是多对多的关系,可以表示为m:n。

  38 [单选题] 下列关于类模板的模板参数的叙述中,错误的是( )。

  A.模板参数可以作为数据成员的类型

  B.模板参数可以作为成员函数的返回类型

  C.模板参数可以作为成员函数的参数类型

  D.模板参数不能作为成员函数的局部变量的类型

  参考答案:D

  参考解析:

  本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。

  39 [单选题] 下面对于友元函数描述正确的是( )。

  A.友元函数的实现必须在类的内部定义

  B.友元函数是类的成员函数

  C.友元函数破坏了类的封装性和隐藏性

  D.友元函数不能访问类的私有成员

  参考答案:C

  参考解析:

  友元函数的定义既可以在类内部进行,也可以在类外部进行。它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非成员函数可以访问类的私有成员。

  40 [单选题] 有如下程序:

2018年9月计算机二级C++考试冲刺必做题及答案(2)

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

  Base::fun

  Derived::fun

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

  A.Base.fun( );

  B.Base::fun( );

  C.Base->fun( );

  D.fun( );

  参考答案:B

  参考解析:

  本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。

责编:曾珂

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部