1、国家二级( C+)笔试模拟试卷 194及答案与解析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 国家二级( C+)笔试模拟试卷 194答案与解析 1 【
2、正确答案】 B 【试题解析】 本题考查数据结构中有关算法的基本知识和概念。数据的结构会直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项 A的说法是错误的。算法的时间复杂度是对算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是对算法在计算机内执行时所需存储空间的度量。 2 【正确答案】 C 【试题解析】 所谓的算法的时间复杂度,是指执行算法 所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。 3 【正确答案】 D 【试题解析】 本题考查软件工程中软件设计的概念和原理
3、。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则: 改进软件结构,提高模块独立性。通过模块的分解或合并,力求降低耦合、提高内聚。低耦合是指降低不同模块间相互依赖的紧密程度,高内聚是指提高一个模块内各元素彼此结合的紧密程度。 模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分;过小的模块 开销大于有益操作,而且模块过多将使系统接口复杂,因此过小的模块有时不值得单独存在。 模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点;如果模块的功能过分局限,使用范围就过分狭窄。本题的正确答案是选项
4、 D。 4 【正确答案】 A 【试题解析】 线性表、栈、队列和双向链表都是典型的线性结构;而二叉树是典型的非线性结构。 【知识拓展】什么是线性结构 ?有 3个衡量标准: 有且只有一个根结点; 每个结点最多有一个前件 (直接前驱 ),也最多有一个后件 (直接后继 ); 删除或插入任何一个结点后还应该是线性结构。如下图所示的就是一个线性结构。不是线性结构就一定是非线性结构。 5 【正确答案】 A 【试题解析】 就软件测试而言,它的目的是发现软件中的错误。但是,发现错误并不是最终目的,最终目的是通过测试发现错误之后还必须诊断并改正错误,这才是测试的目的。由于测试的目标是暴露程序中的错误,所以从心理学
5、角度看,由程序的编写者自己进行测试是不恰当的。因此,在软件测试阶段通常由其他人员组成测试小组来完成测试工作。经过上述分析可知,选项 A的说法是正确的,而选项 B、 C、 D的 说法是错误的。 6 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。 7 【正确答案】 C 【试题解析】 面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。封装性:所谓封装就是将相关的信
6、息、操作与处理融合在一个内含的部件中 (对象中 )。它是面向对象程序设计 的基础。继承性:子类具有派生它的类的全部属性 (数据 )和方法,而根据某一类建立的对象也具有该类的全部属性 (数据 )和方法,这就是继承性。继承有利于提高软件开发效率,容易达到一致性。多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。 8 【正确答案】 B 【试题解析】 耦合性和内聚性是衡量软件的模块独立性的两个定性的标准。其中,内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。它们是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。 一般优秀的软件设
7、计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块之间的内聚性,有利于提高模块的独立性。 9 【正确答案】 D 【试题解析】 本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除元素的一端则称为队头。 10 【正确答案】 B 【试题解析】 对二叉树的前序遍历是指:先访问根结点。然后访问左子树,最后访问右子树,并且,在访问左、右子树时 。先访问根结点,再依次访问其左、右子树。 11 【正确答案】 C 【试题解析】 根据对二叉树根的访问先后顺序不同,分别称为前
8、序遍历、中序遍历和后序遍历。这 3种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是前序遍历方法的递归定义。当二叉树的根不为空时,依次执行如下 3个操作: 访问根结点, 按前序遍历左子树, 按前序遍历右子树。根据如上前序遍历规则来遍历本题中的二叉树。首先访问根结点,即 A,然后遍历A的左子树。遍历左子树同样按照相同的规则首先访问根结点 B,然后遍历 B的左子树。遍历 B的左子树,首先访问 D,然后访问 D的左子树, D的左子树为空,接下来访问 D的右子树,即 Y。遍历完 B的左子树后,再遍历 B的右子树,即 E。到此遍历完 A的左子树,接下来遍历 A的右子树。按照同样的规则,
9、首先访问 C,然后遍历 C的左子树,即 F。 C的左子树遍历完,接着遍历 C的右子树。首先访问右子树的根结点 X,然后访问 X的左子树,即 Z,接下来访问 X的右子树,右子树为空,遍历的结果为 ABDYECFXZ,故本题的正确答案为选项C。 12 【正确答案】 B 【试题解析】 叶子结点总是比度为 2的结点多一个。所以,具有 60个 叶子结点的二叉树有 59个度为 2的结点。总结点数: 60个叶子结点 +59个度为 2的结点+50个度为 1的结点 =169个结点。 13 【正确答案】 A 14 【正确答案】 B 【试题解析】 数据的逻辑结构是数据间关系的描述,它仅抽象地反映数据间的逻辑关系,并
10、不管其在计算机中的存储方式。数据的逻辑结构分为线性结构和非线性结构。若各数据元素之间的逻辑关系可以用一个线性序列简单地表示出来则称之为线性结构,否则称为非线性结构。线性表是典型的线性结构,而树形结构是典型的非线性结构。 15 【正确答案】 B 【试题解析】 本题考查数据库的关系运算。两个关系的并运算是指将第一个关系的元组加到第二个关系中,生成新的关系。因此,并运算不改变关系表中的属性个数,也不能减少元组个数。两个关系的交运算是包含同时出现在第一和第二个关系中的元组的新关系。因此,交运算不改变关系表中的属性个数,但能减少元组个数。投影是一元关系操作。投影操作选取关系的某些属性,这个操作是对一个关
11、系进行垂直分割,消去某些属性,并重新安排属性的顺序,再删除重复的元组。因此,投影运算既可以减少关系表中的属性个数,也可以减少元组个数。两个关系的笛卡儿 积是指一个关系中的每个元组和第二个关系的每个元组连接。因此,笛卡儿积运算能够增加元组属性的个数。在上述 4种运算中,交运算不改变关系表中的属性个数但能减少元组个数。 16 【正确答案】 B 17 【正确答案】 C 【试题解析】 E-R模型中,有 3个基本的抽象概念:实体、联系和属性。 E-R图是 E-R模型的图形表示法,在 E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。 18 【正确答案】 D 19 【正确答案】 A 【试题解
12、析】 本题考查数据库系统的基本概念和知识。数 据的逻辑结构是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项 A的说法是错误的。数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项 B的说法是正确的。数据库设计是在数据库管理系统的支持 下,按照应用的要求,设计一个结构合理
13、、使用方便、效率较高的数据库及其应用系统。数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项 C的说法是正确的。数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项 D的说法是正确的。因此,本题的正确答案是选项 A。 20 【正 确答案】 C 【试题解析】 在数据字典编制过程中,常使用定义方式描述数据结构。 21 【正确答案】 C 【试题解析】 采用
14、 int A =3, 4, 9, 8定义数组 A,则 A中只有 4个元素,而题干要求的是 7个元素, A4、 A5、 A63个元素就不存在。 22 【正确答案】 C 23 【正确答案】 B 【试题解析】 类的三大特性是:封装、继承、多态。 C+中实现信息的封装主要靠类的封装特性来实现。 24 【正确答案】 B 25 【正确答案】 C 【试题 解析】 虚函数是在类的声明中使用 virtual关键字来限定的成员函数,在成员函数实现时不能再使用 virtual关键字进行限定。派生类中的虚函数必须和基类中的虚函数的形参个数、形参类型、返回值完全一致。虚函数不能用 static关键字进行修饰。 26 【
15、正确答案】 B 27 【正确答案】 D 【试题解析】 重载后的运算符的优先级和结合性都不会改变,运算符重载进行对原有的运算符进行适当的改造,重载的功能与原有的功能相类似,但是不能改变原运算符的操作对象个数。 28 【正确答案】 B 29 【正确答案】 B 【试题解析】 在引用函数模板时,如果没在函数名和参数之间加上类型参数,就默认表示参数类型严格按照模板定义的类型匹配;如果在函数名和参数之间加上了类型参数,则对实参自动进行类型转换。 30 【正确答案】 D 31 【正确答案】 A 【试题解析】 setfill( )对当前输出整行有效, setw(5)设置紧跟其后的输出宽度为 5,当输出宽度不超
16、过 5时用 “ ”来填充;如果宽度超过 5则不填充,原样输出所有数据;在没有设置左右对齐时,默认为右对齐,用填充字符填充左边 32 【正确答案】 B 33 【正确答案】 A 【试题解析】 Dowhile( ) 先执行循环体然后判断条件,所以在 k=5, 10,15, 20时将打印 $,而 while( ) 先判断条件,然后执行循环体,所以 k=20到1,分别打印 *。 34 【正确答案】 A 35 【正确答案】 D 【试题解析】 在 C+中,数组的下标为 0 -1,如果定义数组指针,则指针刚开始时是指向数组的头元素 36 【正确答案】 B 37 【正确答案】 B 【试题解析】 对数组定义为 普
17、通数组时,要求数组的下标是常表达式,若定义成数组指针则不需要指定数组的大小。 38 【正确答案】 B 39 【正确答案】 C 【试题解析】 C是传值调用,所以被调函数中形参值改变不会影响到实参,而且没有返回值,所以不会对调用函数产生影响。 A是把引用作为函数参数, D是把指针作为函数参数,都属于传地址调用,改变形参均会影响参数 x的值。 B选项有函数返回值。 40 【正确答案】 C 41 【正确答案】 C 【试题解析】 fun( )的第一个参数是传值调用,第二个是传址调用,故在函数 中修改形参的值会被传回到实参中,故结果为 0和 2。 42 【正确答案】 C 43 【正确答案】 B 【试题解析
18、】 构造函数 A中的形参 a对静态成员 a形成了屏蔽,故只有在成员函数 init( )中才将静态成员 a的值修改为 1,而在其他成员函数中没发生变换,故obj.a=1。 44 【正确答案】 C 45 【正确答案】 C 【试题解析】 派生类在公有派生和保护派生两种方式下,可以访问基类的保护成员。虚基类也可 以被实例化,虚函数如果在派生类中不被重新定义,则直接被派生类继承。 46 【正确答案】 D 47 【正确答案】 C 【试题解析】 C+规定,以下运算符不能被重载: “ ”, “*”, “: ”, “?: ”,“: sizeof”。 48 【正确答案】 C 49 【正确答案】 A 【试题解析】
19、函数模板定义的一般格式为: Template typename类型参数 返回类型 函数名 (模板形参表 ) 函数体 50 【正确答案】 D 【试题解析】 虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现 在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必须由成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为是静态联编。 51 【正确答案】 C 【试题解析】 cin是 istream输入流类的派生类 istream_withassign对象。 cout是ostream输出流类的派生类 ostream_withassi
20、gn对象。 52 【正确答案】 A 53 【正确答案】 A 【试题解析】 test的构造函数重载, test A3调用 test(int A) 函数,然后删除时调用析构函数,故输出选项 A。 54 【正确答案】 C 55 【正确答案】 B 【试题解析】 只有在创建对象时才会调用类的构造函数,在定义指针时不会调用构造函数,本程序共生成了 3个同类对象 a, b2。 56 【正确答案】 A 57 【正确答案】 C 【试题解析】 只有在创建对象时才会调用类的构造函数,在定义指针时不会调用构造函数,只有给指针 new一个地址时会调用构造函数,所以本程序中一共生成了 6个 Point对象 (A, B,
21、C, newPoint3)。 number作为静态数据成员,被同一类的不同对象所共享,故结果为 6。 58 【正确答案】 C 59 【正确答案】 A 【试题解析】 pb作为基类指针,可以指向派生类对象,但是它只能访问基类的成员函数,而不能访问派生类的成员函数,所以 pb- show( );访问的是基类的show( )函数,故打印 10, 20。 60 【正确答案】 A 【试题解析】 此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。 6
22、1 【正确答案】 C 【试题解析】 派生类的构造函数定义的一般格式为: 派生类名 (参数总表 ):基类名 (参数表 ) 派生类新增数据成员的初始化语句 在生成对象 b时,就自动给基类构造函数传递实参 10+i,所以 dispa( )打印结果为 12, dispb( )打印结果为 2。 62 【正确答案】 A 【试题解析】 因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一 定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可以是静态的。 63 【正确答案】 C 【试题解析】 类指针可以指向派生类对象,但是只能访问基类的数据成员和成员函数。 f( )作为虚函数,在派
23、生类中被重新定义,可以通过基类指针或者引用来访问基类和派生类中的同名函数。 64 【正确答案】 C 【试题解析】 此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用自己。 65 【正确答案】 B 【试题解析】 Point operator+( )x+; return*this; 是在成员函数运算符重载单目运算符 (前缀方式 ), Point operator+(int)Point old=*this;+(*t11is); return old; 定义运算符的成员函数重载 +(后缀方式 ),所以均打印11、 11。
24、 66 【正确答案】 B 【试题解析】 此题考查的是虚函数的概念。在成员函数的声明前面加上 virtual关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的 友元函数而不能是静态成员函数。 67 【正确答案】 A 【试题解析】 本段程序实现从键盘接收一段字符串,并计算字符串的长度, cin输入流对象会将空白符、回车符、 tab键作为终止标志,所以输入 Ahcdefg abcd得到的字符串长度为 7。 68 【正确答案】 A 69 【正确答案】 C 【试题解析】 通过调用友元函数,实现求解 n!的算法。 sum=5!+4!+3!+2!。 70 【正确答案】 C 【试题解析】 此题考查的是函
25、数模板。声明一个函数模板的格式是: template函数声明, 函数体 其中的 是由一个或多个 “模板形参 ”组成的,每个 “模板形参 ”可具有以下几种形式: typename参数名; class参数名;类型修饰参数名。 71 【正确答案】 线性结构 【试题解析】 数据的逻辑结构,是指数据元素之间的逻辑关系,分为线性结构和非线性结构,常见的线性结构有线性表、栈和队列等;常见的非线性结构有树、二叉树等。 72 【正确答案】 9 73 【正确答案】 叶子结点 【试题解析】 树中度为零的结点,也就是没 有后件的结点,称为叶子结点。 74 【正确答案】 输出 【试题解析】 测试用例由测试输入数据 (输
26、入值集 )和与之对应的预期输出结果 (输出值集 )两部分组成。 75 【正确答案】 软件开发 【试题解析】 软件生命周期分为三个时期共八个阶段:软件定义期 (问题定义、可行性研究和需求分析阶段 )、软件开发期 (系统设计、详细设计、编码和测试阶段 )、软件维护期 (即运行维护阶段 )。 76 【正确答案】 13A23B 77 【正确答案】 x=yoperator*(z) 78 【正确答案】 false 【试题解析】 此题考查的是逻辑常量。在 c十 +语言中只有两个逻辑常量: true和 false。故本题应填入 false。 79 【正确答案】 成员初始化列表 【试题解析】 派生类是基类的具体
27、化,而基类则是派生类的抽象。派生类也就是基类的具体实现,所以对基类数据成员的初始化是在派生类的构造函数中成员初始化列表执行的。 80 【正确答案】 2 【试题解析】 首先声明为 private的 “private: int j; ”中 j为私有成员。然后在类中没有指定,系统默认为私有。即 “inti: ”中的 i也是私有成员。所以本题中的私有成员数量为 2。 81 【正确答案】 构造函数 【试题解析】 构造函数的主要作用是对数据成员初始化,系统为成员分配内存时,保留这些存储单元的原状。 82 【正确答案】 TestClassl Class 83 【正确答案】 break 【试题解析】 此题考查的是流程控制语句。 “只在循环语句或 switch语句中使用 ”的流程控制语句只有 break。 84 【正确答案】 int*p=DATA 85 【正确答案】 private 【试题解析】 此题考 查的是类的继承方式。类的继承方式有公有、保护和私有三种。分析题目可以得到,若横线处填入的是 private,即类 Defivedt私有继承类Base将导致 objD m和 obiDm出错,符合题目要求。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1