分享
2017年9月计算机二级C++考试强化模拟试卷(1).docx
下载文档

ID:3276933

大小:281.08KB

页数:19页

格式:DOCX

时间:2024-02-19

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2017 计算机 二级 C+ 考试 强化 模拟 试卷
一、选择题(每小题1分,共40分)   1 [单选题] 有如下程序:   运行后的输出结果是( )。   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项的函数定义如下:   若执行函数调用表达式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 [单选题] 有如下程序:   运行时的输出结果是( )。   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 [单选题] 有如下程序:      执行这个程序的输出结果是( )。   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 [单选题] 下列程序的运行结果是( )。   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 [单选题] 有如下程序:   运行后的输出结果是( )。   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 [单选题] 有如下程序段:   执行这个程序的输出结果是( )。   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号医生处就诊的病人姓名的表达式是( )。   不能由该函数模板得到的函数实例是( )。   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 [单选题] 有如下程序:   运行后的输出结果是( )。   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 [单选题] 有如下程序:   执行这个程序的输出结果是( )。   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};   执行下列程序段   输出字符'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 [单选题] 有如下程序:

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开