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