二级C++真题2006年4月答案.doc
《二级C++真题2006年4月答案.doc》由会员分享,可在线阅读,更多相关《二级C++真题2006年4月答案.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、二级C+真题2006年4月答案真题 120一、选择题(每小题2分,共70分) 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:D答案解析:结构化程序设计方法的主要原则有4点:自顶向下(先从最上层总目标开始设计,逐步使问题具体化)、逐步求精(对于复杂问题,设计一些子目标作为过渡,逐步细化)、模 块化(将程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,每个小目标作为一个模块)、限制使用GOTO语句。没有可复用原则,所以选项D为答案。第2题:参考答案:A答案解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互
2、相独立的程度,也可以说是两个或两个以上模块之间关联的 紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚 程度尽量地高。第3题:参考答案:D答案解析:本题考核软件测试、软件调试和软件维护的概念。软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试具有挑剔性, 测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好 的测试在于能发现至今未发现的错误
3、;一个成功的测试是发现了至今未发现的错误。由于测试的这一特征,一般应当避免由开发者测试自己的程序。所以,选项A的说法错误。 调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误:经过调试后的程序还需进行回归测试,以检查调试的效果,同时也 可防止在调试过程中引进新的错误。所以,选项B的说法错误。 软件维护通常有4类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进 行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论
4、是哪类文档,都必须与程序代码同时维护。只有与程序 代码完全一致的文档才有意义和价值。所以,选项C的说法错误。 综上所述,选项A、B、C的说法都错误,所以,选项D为正确答案。第4题:参考答案:B答案解析:“后进先出”表示最后被插入的元素最先能被删除。选项A中,队列是指允许在一端进行插入、而在另一端进行删除的线性表,在队列这种数据结构中,最先插入的元素将 最先能够被删除,反之,最后插入的元素将最后才能被删除,队列又称为“先进先出”的线性表,它体现了“先来先服务”的原则;选项B中,栈顶元素总是最后被插入的元素, 从而也是最先能被删除的元素,栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
5、队列和栈都属于线性表,它们具有顺序存储的特点,所以才有“先进先出”和 “后进先出”的数据组织方式。双向链表使用链式存储方式,二叉树也通常采用链式存储方式,它们的存储数据的空间可以是不连续的,各个数据结点的存储顺序与数据元素之间 的逻辑关系可以不一致。所以选项C和选项D错误。第5题:参考答案:A答案解析:一个非空的数据结构如果满足下列两个条件:(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称为线性结构。线性链表是线性表的链式 存储结构,选项A的说法是正确的。栈与队列是特殊的线性表,它们也是线性结构,选项B的说法是错误的;双向链表是线性表的链式存储结构,其对应的逻
6、辑结构也是线性结构, 而不是非线性结构,选项C的说法是错误的;二叉树是非线性结构,而不是线性结构,选项D的说法是错误的。因此,本题的正确答案为A。第6题:参考答案:D答案解析:二叉树后序遍历的简单描述如下:若二叉树为空,则结束返回。否则(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。 也就是说,后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左 子树,然后遍历右子树,最后访问根结点。根据后序遍历的算法,后序遍历的结果为DEBFCA。第7题:参考答案:C答案解析:在二叉树的第k层上,最多有
7、2k-1(k1)个结点。对于满二叉树来说,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。因此,在深度为7的满二叉 树中,所有叶子结点在第7层上,即其结点数为 2k-1=27-1=64 因此,本题的正确答案为C。第8题:参考答案:D答案解析:本题考核实体集之间的联系。实体集之间的联系有3种:一对一、一对多和多对多。因为一种商品可以由多个顾客购买,而一个顾客可以购买多种商品,所以,“商品”与 “顾客”两个实体集之间的联系一般是“多对多”,选项D正确。第9题:参考答案:A答案解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标
8、明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱 形框表示实体间的联系,框内标明联系名。所以,选项A正确。第10题:参考答案:C答案解析:数据库管理系统DBMS是数据库系统中实现各种数据管理功能的核心软件。它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制 下进行的。所以,DBMS包含数据库DB。操作系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统。所以,DBS包含DBMS,也就包含DB。综上所述,选项C正 确。第11题:参考答案:C答案解析:本题考查了函数的一些概念。内联函数是在一般函数定义之前加上关键字 inline声明的函数,
9、其作用类似于预处理宏函数,而不是定义在另一个函数体内部的函数,所以 选项A不正确。在无返回值函数中,执行完最后一条语句后将自动返回,而不必加入return语句,所以选项B也是错误的。如果函数只是返回值类型不同,而其他完全相同(参数个 数及类型),则不能作为重载函数宋使用,所以选项D不正确。故应该选择C。第12题:参考答案:A答案解析:本题考查了常对象与常成员函数的概念。使用const关键字修饰的对象称为常对象,它的特点是不能被更新;使用const关键字声明的成员函数称为常成员函数,它的特点也 是不能更新对象的数据成员。因为其他成员函数没有这个限制,即可以更新对象的数据成员,所以通过常对象只能调
10、用常成员函数而不能调用其他成员函数,而且常成员函数也只 能调用常成员函数而不能调用其他成员函数,否则它们的特性就会被打破。故应该选择A。第13题:参考答案:B答案解析:本题考查的是虚函数的概念。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。虚函数可以是另一个类的友员函数,但不得是静态成员函数。故应该选 择B。第14题:参考答案:C答案解析:本题考查的是运算符重载的概念。“运算符重载”是针对C+中原有运算符进行的,不可能通过重载创造出新的运算符。故应该选择C。第15题:参考答案:B答案解析:本题考查了类模板实例化的概念。在定义对象的过程中,编译系统会自动地根据需要生成相应的
11、类定义,这种依据类模板生成类定义的过程称为类模板的实例化。故应该选 择B。第16题:参考答案:A答案解析:本题考查的是C+流的一些概念。从输入流中提取数据赋给一个变量的操作称为提取操作;而把表达式的值插入到输出流中的操作称为插入操作。故选项B的说法不正确。 cin是一个预定义的输入流对象而不是流类,故选项C不正确。只有文件流中有一个open成员函数,用来打开一个文件,而输入、输出流中没有open成员函数,选项D的说法不正 确。所以,只有选项A是正确的,应该选择A。第17题:参考答案:A答案解析:本题考查C+语言中的标识符的定义。标识符不是一个随意的字符序列,定义标识符时一般应注意如下几点:第一
12、个字符必须是字母或下划线,中间不能有卒格,所以选项D 是错误的:在第一个字母后,可以是任意字母、下划线和数字组成的字符序列,所以选项B不正确:标识符的长度是任意的,但特定的编译系统能够识别的标识符长度是有限的。 一般不要超过31个字符:标识符中大小写字母是有区别的:用户定义标识符时,不要采用系统的保留字,else是系统保留字所以选项C是错误的。故应该选择A。第18题:参考答案:B答案解析:本题考查了符号常量的特点。符号常量必须在声明的同时为其赋初值。因此选项B是错误的。选项C定义的是一个指向常量的指针变量,即通过该指针不能改变它所指向的内 容,而它自己的内容是可以改变的。定义指针符号常量的格式
13、应该是:double*const point;。所以选项C是合法的,它可以不用在声明时赋初值。故应该选择B。第19题:参考答案:C答案解析:本题考查的是do-while循环。题目首先让x=3,然后进入do-while循环体, x被减去2,接下来的语句输出x的值1。下面计算do-while循环的条件表达式!(-x),由于-运算 符为前缀形式,所以-X的值为0,而!0的结果为“真”,此时x的值变为0,开始第二次执行循环体。x又被减2,输出x的值-2,此时-x的值为-3,!(-3)的值为“假”,所以循环 结束。最后程序的输出结果是1-2,故应该选择C。第20题:参考答案:D答案解析:本题考查的是指针
14、的运用。在使用任何指针变量之前必须先给它赋一个所指合法具体对象的地址值。本题中,在给*p赋值前,指针变量p并没有指向一个具体对象。此时可 以通过编译,但运行时由于p中为随机值,该赋值可能会破坏内存中某个重要的地址空间中的内容,导致程序运行出错。故应该选择D。第21题:参考答案:D答案解析:本题考查的是函数参数的传递。在C+中,函数在传递参数时,总是将实参值的副本传递(拷贝)给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作 都不会改变函数外的实参。故本题function()函数不会对主函数中的 val变量造成任何改变,val也没有被初始化,所以输出的是一个不确定的值:故应该选择
15、D。第22题:参考答案:B答案解析:本题考查了常成员函数和友员函数的一些概念。getRef()函数返回的是a的地址值&a,而函数类型却定义为int,C+中不允许隐式的将一个地址值类型转换为int类型,故选 项A不正确。set()函数被定义为常成员函数,但在函数中给a赋值,改变了数据成员的值这是不允许的,故选项C错误。show()函数被定义为AA类的友员函数,它不属于AA类而是一 个全局函数。所以同时被定义为常成员函数是错误的。所以选项D不正确。故应该选择B。第23题:参考答案:B答案解析:本题考查的知识点是继承的运用。题目中要求的两行输出结果分别在基类的成员函数fun()与派生类的成员函数fu
16、n()中给出,而主函数中只通过派生类对象d调用fun()函 数,即只调用了派生类的成员函数fun()。所以,横线处应该填入对基类成员函数fun()的调用语句,此处只能使用作用域运算符“:”才能调用到基类中的同名函数,故应该选择 B。第24题:参考答案:C答案解析:本题考查的知识点是运算符重载。C+中规定,“”运算符只能作为成员函数重载,故本题的选项C是错误的。第25题:参考答案:D答案解析:本题考查的知识点是模板函数的调用。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信 息:从模板的实参表(用括起来的参数表)或从模板函数实参
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 2006 答案
