A.3,O,-10
B.0,O,5
C.-10,3,-1O
D.3,O,3
(4)设有如图所示的二叉树
则对该二叉树前序遍历的结果是( )。
A.FCADBEG
B.ACBDFGE
C.ABDCGEF
D.ACBDFEG
(5)以下程序运行后,输出结果是( )。
A.49.5
B.9.5
C.22.O
D.45.O
(6)静态成员函数不能说明为( )。
A.整型函数
B.常函数
C.虚函数
D.内联函数
(7)为了避免嵌套的if…else语句的二义性,C++规定与else配对的是( )。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
(8)下列数据结构中,能直接使用堆排序法进行排序的是( )。
A.完全二叉树
B.线性链表
C.带链的栈
D.带链的队列
(9)以下有关类与结构体的叙述不正确的是( )。
A.结构体中只包含数据;类中封装了数据和操作
B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽
C.用struet不能声明一个类型名;而class可以声明一个类名
D.结构体成员默认为public;类成员默认为private
(10)设有以下类和对象的定义:
则下面针对成员变量m的引用,错误的是( )。
A.k1.m=1
B.k2->m=2
C.p1->m=3
D.(*p2).m=4
(11)下列关于虚基类的描述中错误的是( )。
A.虚基类子对象的初始化由最派生类完成
B.虚基类子对象的初始化次数与虚基类下面的派生类个数有关
C.设置虚基类的目的是消除二义性
D.带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用
(12)C++语言中函数返回值的类型决定于( )。
A.return语句中的表达式类型
B.调用函数的主调函数类型
C.调用函数时r临时类型
D.定义函数时所指定的函数类型
(13)有关构造函数的说法中错误的是( )。
A.构造函数名字和类的名字一样
B.构造函数在说明类变量时自动执行
C.构造函数无任何函数类型
D.构造函数有且只有一个
(14)下列叙述中正确的是( )。
A.线性表是线性结构
B.栈与队列是非线性结构
C.线性链表是非线性结构
D.二叉树是线性结构
(15)有以下程序:
执行后输出结果是( )。
A.7,8,8
B.7,8,7
C.8,7,7
D.8,7,8
(16)以下程序的输出结果是( )。
A.1
B.0
C.非O的数
D.-1
(17)继承机制的作用是( )。
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
(18)程序设计方法要求在程序设计过程中( )。
A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图
B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释
C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释
D.以上三种说法都不对
(19)友元函数的作用是( )。
A.提高程序的效率
B.加强类的封装性
C.实现数据的隐蔽性
D.增加成员函数的种类
(20)下列描述中正确的是( )。
A.多重继承中,不同父类中不能有同名成员
B.多重派生中,所有父类的派生方式必须相同
C.多重派生的子类不能再派生子类
D.上述三种说法都不对
(21)有关构造函数的叙述不正确的是( )。
A.构造函数名必须和类名一致
B.构造函数在定义对象时自动执行
C.构造函数无任何函数类型
D.在一个类中构造函数有且仅有一个
(22)下面程序段的正确输出是:
intw=4,=3,=2,=1;out<<(w<x?
w:
z<y?
z:
x)<<endl;( )。
A.O
B.1
C.2
D.3
(23)下列关于关系运算的叙述中正确的是( )。
A.投影、选择、连接是从二维表的行的方向来进行运算
B.并、交、差是从二维表的列的方向来进行运算
C.投影、选择、连接是从二维表的列的方向来进行运算
D.以上三种说法都不对
(24)关系表中的每一横行称为一个( )。
A.关系
B.元组
C.属性
D.字段
(25)下列程序的运行结果是( )。
A.a=%2,b=%5
B.a=2,b=5
C.a=d,b=d
D.a=%d,b=%d
(26)以下函数值的类型是( )。
A.int
B.不确定
C.void
D.float
(27)语句cout<<(a=2)&&(h=-2);的输出结果是( )。
A.无输出
B.编译错误
C.-1
D.1
(28)即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承问接基类的成员,这说明继承具有( )。
A.规律性
B.传递性
C.重复性
D.多样性
(29)数据的存储结构是指( )。
A.数据所占的存储空间量
B.数据的逻辑结构在计算机中的表示
C.数据在计算机中的顺序存储方式
D.存储在外存中的数据
(30)以下程序的输出结果为( )。
A.27.000000
B.27.500000
C.28.000000
D.28.500000
(31)下列叙述中正确的是( )。
A.数据库设计是指设计数据库系统
B.数据库设计是指设计数据库管理系统
C.数据库设计是指在已有数据库管理系统的基础上建立数据库
D.以上三种说法都不对
(32)若有以下定义和语句:
则以下选项中错误的语句是( )。
A.*q=0;
B.w=p;
C.*p=a;
D.*p=*W;
(33)以下程序的输出结果是( )。
A.21
B.32
C.33
D.11
(34)设有如下关系表:
则下列操作中正确的是( )。
A.T=R∩S
B.T=R∪S
C.T=R×S
D.T=R/S
(35)所有在函数中定义的变量及函数的形式参数,都属于( )。
A.全局变量
B.局部变量
C.静态变量
D.常量
每空2分,共30分
(1)下列程序中的重载函数disp()发生错误,错误原因是_______。
(2)在进行模块测试时,要为每个被测试的模块另外设计两类模块:
驱动模块和承接模块。
其中_______的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。
(3)对于下列语句其输出结果为:
_______。
(4)在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为_______。
(5)下列程序对加号进行了重载,划线部分的语句是_______。
(6)下列程序编译时发现pd->f(10);语句出现错误,其原因是_______。
(7)设px是指向一个类动态对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的_______。
(8)为了在两个关系中提取所有相同的元组,则在交与并这两种关系运算中,应使用_______运算。
(9)完成下列类的构造函数,初始化语句为_______。
(10)在面向对象方法中,属性与操作相似的一组对象称为_______。
(11)在顺序查找与二分查找两种方法中,可以用_______方法对有序线性链表进行查找。
(12)逻辑表达式x>3&&x<10的相反表达式为_______。
(13)下列程序的运行结果为_______。
(14)下列程序编译错误,因为add函数返回值是一个引用,故对return后返回值的要求是_______。
答案和解析
每小题2分,共70分
(1):
C
本题考查考生对for循环中三个表达式的执行顺序及使用方法。
首先执行第一个表达式,然后根据第二个表达式判断是否成立,如果成立则执行循环体,然后执行第三个表达式,随后再去判断第二个表达式。
根据这个顺序,可以很容易的判断出,循环体只执行了一次。
(2):
D
构造函数和析构函数一样,是类的特殊的成员函数。
其特殊之处在于,构造函数可以有多个版本以实现不同的初始化方式,不能指定形参和函数类型,这些都是系统默认完成。
(3):
B
本题考察逗号表达式的使用规则。
只要考生能将表达式正确展开,逐步分析,就可获得正确答案为B。
(4):
A
按照二叉树前序遍历的方法:
在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左、右子树时,仍然先访问根结点遍历左子树,然后遍历左子树,最后遍历右子树。
对本题中的二叉树进行前序遍历的结果应是FCADBEG。
(5):
B
本题考察宏定义的使用,宏在使用是如同函数一样,但却是在编译时展开。
而函数却是在运行时进行计算的。
(6):
C
静态函数不能说明为虚函数。
(7):
C
】C++规定else总是与之前未配对的最近的if进行配对。
这样可以避免二义性,也便于编译器分析。
(8):
A
堆可以用完全二叉树表示,因此,完全二叉树能直接使用堆排序法进行排序。
(9):
C
本题同样考察的是结构体和类之间的区别和联系。
(10):
B
本题也是考察有名对象和无名对象的使用规则。
对有名对象,要使用点操作符,无名对象要使用箭头运算符。
据此可以判断正确答案为B。
(11):
B
虚基类主要是为了消除在多重继承中的二义性问题。
实际上说某个类是虚基类,并不是该类本身有什么特殊的地方,而是在继承的时候加上virtual修饰词。
虚基类不同于抽象类。
虚基类是可以被实例化的,派生类初始化时,必须列出虚基类的构造函数调用。
虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。
故本题正确答案为B。
(12):
D
函数在定义时已经可以指定其函数类型,则函数返回值类型就是该类型。
(13):
D
本题考察构造函数的有关概念。
构造函数在面向对象设计和开发中占据重要地位,考生需要扎实掌握。
构造函数不能返回类型,但是可以有参数,可以重载。
据此可以选择正确答案为D。
(14):
A
线性表是线性结构;线性链表是线性表的链式存储结构,因此也是线性结构;栈与队列是特殊的线性表,因此也是线性结构;二叉树是非线性结构。
(15):
B
可以很容易分析出f函数的功能是比较两个数的大小,返回较小者。
指向的也是较小者,故代人数据即可得出正确结果为B。
(16):
A
本题考察逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为A。
或优先级最高,&&和!
!
的优先级相同,则按照从左到右的顺序计算。
(17):
C
继承是类的一个重要特性,没有继承,面向对象方法也就不存在。
正是有了继承,才呈现出丰富多彩的类和对象。
(18):
D
在程序设计过程中,一个很重要的环节是首先确定实现各种功能的算法,并且用某种工具将它精确地表达出来。
流程图是其中的工具之一。
因此,程序设计的过程应是先画出流程图,然后根据流程图编制出程序。
因此,选项A中的说法是错误的。
程序中的注释是为了提高程序的可读性。
使程序易于理解、易于维护,注释必须在编制程序的同时加入。
因此,选项B和C中的说法也都是错误的。
(19):
A
友元函数的引入是为了提高程序的效率,减少通过接口访问的限制,但却破坏了类的封装性。
(20):
D
本题考察多重继承情况下各层次类的命名和派生规则。
(21):
D
本题考查构造函数的基本知识。
构造函数名字与类名相同;可以重载;不需要参数;不需要指定返回类型等。
本题答案为D。
(22):
B
本题为表达式作为变量进行输出,而且表达式为两个三目表达式的嵌套,只要掌握了该三目表达式的含义,可以正确得出答案为B。
(23):
C
在关系模型的数据语言中.一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等运算。
前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。
因此,选项A与B中的说法都是错误的,而选项C中的说法是正确的。
(24):
B
关系表中的每一横行称为一个元组。
(25):
B
本题非常简单,考查C++中基本的输出语句,注意不要与c语言的输出控制字符混淆。
(26):
A
本题考查C++当中函数的默认返回类型。
这种类型与函数内部的局部变量的类型没有关系。
如果不小心处理函数返回类型,可能造成数据丢失。
本题答案为A。
(27):
D
很明显,本题考查的是表达式的值作为结果输出。
可以看出,本表达式是一个逻辑表达式,其结果为真或假,那么输出则对应1和O,故排除选项C。
本题答案为D。
(28):
B
继承具有传递性,从而在类的层次结构中才表现出丰富多彩的特性,呈现出动态性。
(29):
B
数据的存储结构是指数据的逻辑结构在计算机中的表示。
(30):
A
本题考查表达式值的类型由参与运算的所有变量的类型中优先级最高的变量类型所决定。
不过要注意的是整型向float型转换时,将丢失小数部分,即向下取值。
(31):
C
数据库设计是指在已有数据库管理系统的基础上建立数据库。
(32):
D
考生遇到这么复杂的变量间关系时,可以在草稿纸上画出各个变量的内存存放示意图,然后用箭头指向表示指针变量与其他变量之间的关系。
如果能够清晰的画出这些变量问关系,则可以会让你容易的判断出正确答案为D。
(33):
B
本题是两个循环语句和一个判断语句的嵌套。
对于这类试题,只要考生基础知识扎实,细心判断,一般是没有多大难度的。
For循环的作用是在i等于10的时候跳出循环。
本题的答案为B。
(34):
B
显然,关系表T是关系表R与S的并,即T=R∪S。
(35):
A
本题考查几种变量的作用域范围及其分类。
每空2分,共30分
(1):
【答案】在静态成员函数的实现中不能直接引用类中说明的非静态成员
(2):
【答案】驱动模块
【解析】在进行模块测试时,要为每个被测试的模块另外设计两类模块:
驱动模块和承接模块。
其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。
(3):
【答案】Pello
【解析】注意,两个字符串都没有名字,属字符串常量,在内容中是同一份内容。
因此,对str1重新赋值,仅仅替换了该字符数组的第一个字符。
两个指针指向同一个字符串,因此输出为Pello。
(4):
【答案】消息
【解析】在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为消息。
(5):
【答案】returnt1.area+t2.area;
【解析】符号重载时往往采用的方法是对对象中的每个成员分别处理,封装之后体现出对象参与运算的现象。
(6):
【答案】数据类型不匹配
【解析】派生类中的成员函数隐藏了基类的同名函数,而参数10又无法隐式转换为char类型参数。
(7):
【答案】析构函数
【解析】采用new进行动态分配内存生成新对象的时候。
对象执行构造函数,在执行delete时,执行对象的析构函数以回收资源。
(8):
【答案】交
【解析】为了在两个关系中提取所有相同的元组,则在交与并这两种关系运算中,应使用交运算。
(9):
【答案】x=initx;y=initly;
【解析】本题考查的是类的私有数据盘口何从接口成员函数那里数据的。
本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。
(10):
【答案】类
【解析】在面向对象方法中,类描述的是具有相似性质的一组对象。
因此,属性与操作相似的一组对象称为类。
(11):
【答案】顺序查找
【解析】在顺序查找与二分查找两种方法中,只能用顺序查找方法对有序线性链表进行查找,因为二分查找方法只适用于顺序存储的有序表。
(12):
【答案】x<=3||x>=10
【解析】在3,10之间的区间和之前的两个区间是相反的,故可以写出一个基本的或表达式。
(13):
【答案】i=3
【解析】本题考察考生的for语句和if语句综合使用能力。
本题的情况适用于希望在满足指定值时停止循环的情况。
(14):
【答案】不能是表达式
【解析】引用是变量的别名,其实质是变量的地址。
return在返回值时,如果其后为表达式,则系统为该表达式生成一个临时变量用于存放该表达式的结果,函数执行完毕之后该变量被系统回收,因此,返回的该变量的地址对调用函数来说已经没有意义了。