}
参考答案及分析
一、选择题
(1)D
解析:
算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
(2)C
解析:
链式存储结构克服了顺序存储结构的缺点:
它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
故链式存储结构下的线性表便于插入和删除操作。
(3)C
解析:
数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。
数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
(4)D
解析:
结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。
(5)B
解析:
软件设计包括软件结构设计、数据设计、接口设计和过程设计。
其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。
(6)A
解析:
确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。
(7)A
解析:
数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。
不包括选项中的控制流。
(8)C
解析:
数据库中的数据具有"集成"与"共享"的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项C)正确。
(9)B
解析:
E-R模型即实体-联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。
数据库逻辑设计阶段包括以下几个过程:
从E-R图向关系模式转换,逻辑模式规范化及调整、实现规范化和RDBMS,以及关系视图设计。
(10)A
解析:
人工管理阶段是在20世纪50年代中期以前出现的,数据不独立,完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具有高度的物理独立性和一定的逻辑独立性。
(11)B
解析:
数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点--多态性。
(12)D
解析:
++,--运算符不能用于常量表达式。
(13)B
解析:
表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int型的,所以得出的结果也为int型,即去掉小数点后的部分,只取商的整数部分。
(14)A
解析:
单目的++运算优先级高于双目的+运算,不过++的结合性是自右向左的,而+是自左至右的,所以上面的两个表达式都是先计算a+b的值之后,a再自加1。
(15)D
解析:
本题主要考察的是switch语句的使用,在第一个case处,因为满足条件所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。
(16)A
解析:
数组定义中的数字指的是数组的大小,而下标是从0开始的,所以题中数组的最后一个元素是num[9]。
(17)A
解析:
本题考察的是数组和指向数组的指针之间的关系,选项A)中x是被数组a的第一个元素赋值,其余的都是被数组a的第二个元素赋值。
(18)D
解析:
本题考察的是引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改变。
(19)A
解析:
本题考察的是内联函数的使用,它的引入是为了解决程序中函数调用的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来替换。
(20)B
解析:
自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。
(21)A
解析:
本题考察点为类成员的访问权限,public关键字修饰的类成员可以被类的对象通过成员操作符"."直接访问,protected和private则不能,而static不能单独修饰类的成员。
(22)B
解析:
对象属于某个已知的类,是类的实例,对象之间通信实际上就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于类的方法的改变和补充,重载是多态性之一。
(23)C
解析:
析构函数可以被函数调用,也可以系统调用:
函数体内的对象在函数结束时调用析构函数和使用delete释放对象所占有用的资源。
(24)C
解析:
拷贝初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。
(25)D
解析:
本题考察的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个)。
(26)C
解析:
友元函数是独立于当前类的外部函数,但它可以访问该类的所有对象的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函数。
(27)C
解析:
数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。
(28)B
解析:
派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。
(29)A
解析:
本题考察的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。
(30)C
解析:
基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中func1()是虚函数;而类A中的func2没有被关键字virtual修饰,所以不是虚函数。
(31)C
解析:
例如":
:
"运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字operator,而调用时可直接使用运算符。
(32)D
解析:
题干表示的是回车换行,选项A),B)和C)都表示回车换行。
而D)是字符串的结尾标志。
(33)C
解析:
for循环执行2次,所以第一次for循环为result=1*a[1]=4,第二次for循环为result=4*a[2]=20。
(34)C
解析:
应该先做++运算,然后进行%运算,最后比较不等式,实际上最后输出的结果就是被3除,余数为2的不大于8的数。
(35)B
解析:
本题考察模板函数的应用,表达式int(1.1)和int(4.2)是将1.1和4.2强制转换为整型。
二、填空题
(1)非线性结构
解析:
数据的逻辑结构有线性结构和非线性结构两大类。
(2)相邻
解析:
常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。
其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。
(3)可重用性
解析:
本题考查了继承的优点:
相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
(4)软件开发
解析:
基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:
软件开发技术和软件工程管理。
软件开发技术包括:
软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。
软件工程管理包括:
软件管理学、软件工程经济学,以及软件心理学等内容。
(5)集合
解析:
在关系操作中,所有操作对象与操作结果都是关系。
而关系定义为元数相同的元组的集合。
因此,关系操作的特点是集合操作。
(6)多态性
解析:
面向对象系统包含了三个特征--封装性、继承性和多态性,这三个特征可以很好的实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。
(7)true
解析:
本题考察的是对于逻辑运算符号的理解,"||"运算符的任何一边取值为真,则整个运算结果为真。
(8)5
解析:
因为b的值为1,所以b&&a<5相当于a<5,当a=5时退出循环,一共进行5次循环。
(9)12345
解析:
本题考察的是考生使用简单循环输出数组元素的能力,因为结束条件是i<5,而i初始值为0,所以只会输出前5个元素。
(10)main
解析:
所有的C++语言程序都是从main函数开始执行,而普通函数的存在是为了简化main函数的复杂程度。
(11)拷贝构造
解析:
本题考察的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名:
:
拷贝构造函数名(类名&引用名)。
(12)基类~派生类
解析:
本题主要考察的是派生类构造函数的执行顺序,在C++语言中构造函数的执行顺序是先基类后派生类,而析构函数的执行顺序正好相反,是先调用派生类后调用基类。
(13)类
解析:
本题考察的是类模板的定义,C++语言中模板分为两种:
类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。
(14)*****hello
解析:
本题考察的是C++语言的流输出操作,cout中包括的函数fill()和width()分别实现填充和设定显示长度的功能。
该资料来自互联网请勿用作商业用途