【计算机类职业资格】全国计算机等级考试二级C++真题2007年4月及答案解析.doc
《【计算机类职业资格】全国计算机等级考试二级C++真题2007年4月及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】全国计算机等级考试二级C++真题2007年4月及答案解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、全国计算机等级考试二级 C+真题 2007年 4月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关2.在结构化程序设计中,模块划分的原则是(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度3.下列叙述中正确的是(分数:2.00
2、)A.软件测试的主要目的是发现程序中的错误B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误4.下面选项中不属于面向对象程序设计特征的是(分数:2.00)A.继承性B.多态性C.类比性D.封装性5.下列对队列的叙述正确的是(分数:2.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据6.对下列二叉树 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ7.某二叉树中有 n个度为 2的结
3、点,则该二叉树中的叶子结点数为(分数:2.00)A.n+1B.n-1C.2nD.n/28.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(分数:2.00)A.并B.交C.投影D.笛卡儿乘积9.在 E-R图中,用来表示实体之间联系的图形是(分数:2.00)A.矩形B.椭圆形C.菱形D.平行四边形10.下列叙述中错误的是(分数:2.00)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持11.为了取代 C中带参数的宏,在 C+中使用(分数:2.00
4、)A.重载函数B.内联函数C.递归函数D.友元函数12.下列关于类定义的说法中,正确的是(分数:2.00)A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义13.下列关于派生类构造函数和析构函数的说法中,错误的是(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数14.通过运算符重载,可以改变运算符原有的(分数
5、:2.00)A.操作数类型B.操作数个数C.优先级D.结合性15.有如下函数模板:templateclass TT square(T x)return x*x;其中 T是(分数:2.00)A.函数形参B.函数实参C.模板形参D.模板实参16.使用输入输出操作符 setw,可以控制(分数:2.00)A.输出精度B.输出宽度C.对齐方式D.填充字符17.下列字符串中,不可以用作 C+标识符的是(分数:2.00)A.y_2006B._TEST_HC.ReturnD.switch18.字面常量 42、4.2、42L 的数据类型分别是(分数:2.00)A.long、double、intB.long、fl
6、oat、intC.int、double、longD.int、float、long19.执行下列语句段后,输出字符“*”的个数是 for(int i=50;i1;-i)cout*;(分数:2.00)A.48B.49C.50D.5120.有如下程序段 int i=0,j=1;int void dispa() coutx,; private: int x; ; class B: public A public: B(int i): A(i+10) x=i; void dispb() (dispa(); coutxendl; private: int x; ; int main() B b(2); b
7、.dispb(); return 0; 运行时输出的结果是(分数:2.00)A.10,2B.12,10C.12,2D.2,232.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序; #include iostream using namespace std; class Base public: virtual void f() cout“f0+“; void g() cout“g0+“; ; class Derived: public Base public: void f()
8、cout“f+“; void g() cout“g+“; ; int main() Derived d; Base *p= P-f(); P-g(); return 0; 运行时输出的结果是(分数:2.00)A.f+g+B.f0+g+C.f+g0+D.f0+g0+33.下面程序中对一维坐标点类 Point进行运算符重载 #include iostream using namespace std; class Point public: Point(int val) x=val; Point return *this; Point operator+(int) Point old = *this
9、; +(*this); return old; int GetX() const return x; private: int x; ; int main() Point a(10); cout (+a).GetX(); cout a+.GetX();return 0; 编译和运行情况是(分数:2.00)A.运行时输出 1011B.运行时输出 1111C.运行时输出 1112D.编译有错34.有如下程序: #include iostream using namespace std; int main() char str100, *p; cout“Please input a string:“
10、; cinstr; p=str; for (int i=0; *p!=/0; p+,i+); coutiendl; return 0; 运行这个程序时,若输入字符串为 abcdefgabcd 则输出结果是(分数:2.00)A.7B.12C.13D.10035.有如下程序: #include iostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long a) x=a; private: long x; ; long fun(Sample s) if(s.x 2) return 1
11、; return s.x * fun(Sample(s.x-1); int main() int stun = 0; for (int i=0; i6; i+) sum += fun(Sample(i); cout sum; return 0; 运行时输出的结果是(分数:2.00)A.120B.16C.154D.34二、B填空题/B(总题数:15,分数:30.00)36.在深度为 7的满二叉树中,度为 2的结点个数为U 【1】 /U。(分数:2.00)填空项 1:_37.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于U 【2】 /U测试。(分数:2.00)填空项 1:_38.在数
12、据库系统中,实现各种数据管理功能的核心软件称为U 【3】 /U。(分数:2.00)填空项 1:_39.软件生命周期可分为多个阶段。一般分为定义阶段、开发阶段和维护阶段。编码和测试属于U 【4】 /U阶段。(分数:2.00)填空项 1:_40.在结构化分析使用的数据流图(DFD) 中,利用U 【5】 /U对其中的图形元素进行确切解释。(分数:2.00)填空项 1:_41.C+中只有两个逻辑常量:true 和U 【6】 /U。(分数:2.00)填空项 1:_42.若要访问指针变量 p所指向的数据,应使用表达式U 【7】 /U。(分数:2.00)填空项 1:_43.己知一个函数的原型是: int f
13、n(double x); 若要以 5.27为实参调用该函数,应使用表达式U 【8】 /U。(分数:2.00)填空项 1:_44.有如下定义: class MA int value; public: MA(int n=0):value(n) ; MA*ta,tb; 其中MA类的对象名标识符是U 【9】 /U。(分数:2.00)填空项 1:_45.如下类定义中包含了构造函数和拷贝构造函数的原型声明,请在横线处填写正确的内容,使拷贝构造函数的声明完整。 Class myClass private: int data; public: myClass(int value);/构造函数 myClass(
14、constU 【10】 /UanotherObject);/拷贝构造函数 (分数:2.00)填空项 1:_46.用来派生新类的类称为U 【11】 /U,而派生出的新类称为它的子类或派生类。(分数:2.00)填空项 1:_47.有如下程序: #includeiostream using namespace std; class CA public: CA()coutA;) ; class CB:private CA public: CB()coutB; ; int main() CA a; CB b; return 0; 这个程序的输出结果是U 【12】 /U。(分数:2.00)填空项 1:_4
15、8.若将一个二元运算符重载为类的成员函数,其形参个数应该是U 【13】 /U个。(分数:2.00)填空项 1:_49.有如下程序: #includeiostream using namespace std; class DA int k; public: DA(int x=1):k(x) DA()coutk; ; int main() DA d=DA(3),DA(3),DA(3); DA*p=new DA2; delete p; return 0; 这个程序的输出结果是U 【14】 /U。(分数:2.00)填空项 1:_50.C+语言中的多态性分为编译时的多态性和U 【15】 /U时的多态性。
16、(分数:2.00)填空项 1:_全国计算机等级考试二级 C+真题 2007年 4月答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列叙述中正确的是(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量 C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关解析:解析 本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算
17、法的效率。选项 A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项 B的说法是正确的。 数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项 C的说法是错误的。 有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项
18、 D的说法是错误的。2.在结构化程序设计中,模块划分的原则是(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度 解析:解析 本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则: (1)改进软件结构,提高模块独立性。通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。 (2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:
19、过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。 (3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点;如果模块的功能过分的局限,使用范围就过分狭窄。 经过上述分析,本题的正确答案是选项 D。3.下列叙述中正确的是(分数:2.00)A.软件测试的主要目的是发现程序中的错误 B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误解析:解析 本题考查软件工程中测试的目的和方法。仅就软件测试而言,它的目的是发现软件
20、的中的错误,但是,发现错误并不是最终目的,最终目的是通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。 由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在软件测试阶段通常由其他人员组成测试小组来完成测试工作。因此,经过上述分析可知选项 A的说法是正确的,而选项 B、C、D 的说法是错误的。4.下面选项中不属于面向对象程序设计特征的是(分数:2.00)A.继承性B.多态性C.类比性 D.封装性解析:解析 通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信
21、息、操作与处理融合在一个内含的部件中(对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。 多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复
22、杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,选项 C的说法是错误的。5.下列对队列的叙述正确的是(分数:2.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据 解析:解析 本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项 D的说法是
23、正确的。6.对下列二叉树 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析 本题考查数据结构中二叉树的遍历。根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这三种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是前序遍历方法的递归定义。 当二叉树的根不为空时,依次执行如下 3个操作: (1)访问根结点 (2)按先序遍历左子树 (3)按先序遍历右子树 根据如上前序遍历规则,来遍历本题中的二叉树。首先访问根结点,即 A,然后遍历 A的左子树。遍历左子树同样按照相同的规则首先访问根结点 B,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 全国 计算机等级考试 二级 2007 答案 解析 DOC
