[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc

上传人:eventdump275 文档编号:492775 上传时间:2018-11-30 格式:DOC 页数:28 大小:76.50KB
下载 相关 举报
[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc_第1页
第1页 / 共28页
[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc_第2页
第2页 / 共28页
[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc_第3页
第3页 / 共28页
[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc_第4页
第4页 / 共28页
[计算机类试卷]2009年3月国家二级(C++)笔试真题试卷及答案与解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、2009年 3月国家二级( C+)笔试真题试卷及答案与解析 1 下列叙述中正确的是 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 2 支持子程序调用的数据结构是 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 3 某二叉树有 5个度为 2的节点,则该二叉树中的叶子节点数是 ( A) 10 ( B) 8 ( C) 6 ( D) 4 4 下列排序方法中,最坏情况下比较次数最少的是 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 5 软件

2、按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 6 下面叙述中错误的是 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 ”是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 7 耦合性和内聚性是对模块独立性度量的两 个标准。下列叙述中正确的是 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦合性提高内聚性有利于提高模块的独立性 ( C)耦合性是指一个模块内部各个元素

3、间彼此结合的紧密程度 ( D)内聚性是指模块问互相连接的紧密程度 8 数据库应用系统中的核心问题是 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 9 有两个关系 R、 S如下: 由关系 R通过运算得到关系 s,则所使用的运算为 ( A)选择 ( B)投影 ( C)插入 ( D)联接 10 将 ER图转换为关系模式时,实体和联系都可以表示为 ( A)属性 ( B)键 ( C)关系 ( D)域 11 对 c+编译器区分重载函数无任何意义的信息是 ( A)参数类型 ( B)参数个数 ( C)返回值类型 ( D)常成员函数关键字 const 12 有如下类定

4、义和变量定义: class A public: A()data=O; 一 A() int GetData()const retum data; void SetData(int n) data=n; private: int data; ; const A a; A b; 下列函数调用中错误的是 ( A) a GetData(); ( B) a SetData(10); ( C) b GetData(); ( D) b SetData(10); 13 有如下类定义和变量定义: class parents public: int publicData; private: int privateD

5、ata; ; class ChildA: public Parents *类体略 * ); class ChildB: private Parents *类体略 * ; ChildA a; ChildB b: 下列语句中正确的是 ( A) coutopen(”file dat”); 17 下列描述中,不属于面向对象思想主要特征的是 ( A)封装性 ( B)跨平台性 ( C)继承性 ( D)多态性 18 有如下程序段: int i=4; int J=1: int main() int i=8, J=i; cout ( D) 26 当使用 ifstream流类定义一个流对象并打开一个磁盘文件时,文

6、件的默认打开方式为 ( A) ios_base: in ( B) ios_base: in l ios_base: out ( C) ios_base: out ( D) ios_base: ingdos_base: out 27 有如下程序: #include #include using namespace std; class XCD char*a; int b; public: XCD(char; l: aa, int bB) a=flew charstrlen(aA)+1; strcpy(a, aA); b=bb; char*lE Geta()return a; int Getb()

7、return b; ; int main() char*pl=”abcd” *p2=”weirong”; int dl=6, d2=8; XCD x(pl; d1), Y(p2, d2); cout #include using namespace std; class XCF int a; public: XCF(int aa=O): a(aA)coutGeta(); delete pd; return 0; 运行 时的输出结果是 ( A) 1215588 ( B) 1218855 ( C) 12185 ( D) 128512 29 已知类 MyClass声明如下: class MyClas

8、s int n; public: MyClass(int k): n(k) int getValue()constreturn n; ; 在下列数组定义中正确的是 ( A) MyClass xl2; ( B) MyClass x22=new MyClass(1), new MyClass(2); ( C) MyClass * x32; ( D) MyClass * x412=MyClass(1), MyClass(2); 30 有如下程序: #include using namespace std; class AA int k: protected: int n; void setK(int

9、 k)mis-k=k; public: void setN(int n)tllis-n=n; ; class BB: public AA *类体略 * ; int main() BB X; x n=l: 1 x setN(2); 2 x k=3: 3 X setK(4); 4 return 0; 在标注号码的 4条语句中正确的是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 31 有如下类定义: class XX int XX; public: xx(): xx(0)tout using namespace std class A public: virtual void f()co

10、ut using namespace std; class Pair int m; int n; public: Pair(int i, int J): m(i), n(J) bool operator(Pair P)const; 需在类体外给出定义 ; int main() Pair pl(3, 4), p2(4, 3), p3(4, 5); COUtp2)p1)p3)p2); return 0; 运算符函数 operator功能是比较两个 Pair对象的大小,当左边对象大时,返回true,否则 返回 false。比较规则是首先比较两对象的 m成员, m大者为大;当 m相等时比较 n.n大者

11、为大。程序输出 0101,下列对运算符重载函数的正确定义是 ( A) bool Pair: operator(Pair P)const if(m!=P m)return mP m; return nP n; ) ( B) bool Pair: operator(Pair P) if(m!=P m)return mP m; return nP n; ) ( C) bool Pair: operator(Pair P)const if(mP m)return true; return 11P n; ) ( D) bool Pair: operator(Pair P) if(mP m)return

12、true; return 11P n; 34 假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外 3条语句不同的语句是 ( A) cout using narnespace std; class ONE int e; public: ONE(): c(O)cout using namespace std; class Monitor public: Monitor(char t): type(t) void Print()const cout using namespace std; class Animal public: virtual char*getType()const

13、return“Animal”; virtual char*getVoice()constreturn“Voice”; ; class Dog: public Animal public: char*getType()constrgturn“Dog”; char*getVoice()constretum“Woof”; ; void type(Animal&A)cout Type为类型参数 class Xtwo由两个 Type类型的数据成员构成的模板类 Type a; Type b; public: Xtwo(Type aa=O, Type bb=O): a(a A), b(bB) int Com

14、pare()比较 a和 b的大小 if(aB)retum 1; else if(a=B)return 0; else return-1: f Type Sum(); return a+b; 返回 a与 b的和 Type Mult(); 函数声明,返回 a和 b的乘积 ; template 【 】: Mult()return a*b; Mult函数的类外定义 2009年 3月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 D 【试题解析】 栈是 “先进后出 ”的线性表;队列是 “先进先出 ”的线性表;循环队 列是队列的一种顺序存储结构,因此是线性结构;有序线性表既可以采用顺序存储结构

15、,也可以采用链式存储结构。 2 【正确答案】 A 【试题解析】 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A)。 3 【正确答案】 C 【试题解析】 对于任何一棵二叉树 T,如果其终端节点 (叶子 )数为 n1,度为 2的节点数为 n2,则 n1=n2+1。所以该二叉树的叶子节点数等于 5+1=6。 4 【正确答案】 D 【试题解析】 冒泡排序、简单选择排序和直接插入排序在最坏情况下比较次数都是 “n(

16、n-1) 2”,堆排序在最坏情况下比较次数最少,是 “O(nlog2n)”。 5 【正确答案】 C 【试题解析】 软件按功能可以分为:应用软件、系统软件、支撑软件 (或工具软件 )。应用软件是为解决某一特定领域的应用而开发的软件;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件;支撑软件是介于系统软件和应 用软件之间,协助用户开发软件的工具性软件。编译程序、操作系统和汇编程序都属于系统软件;教务管理系统属于应用软件。 6 【正确答案】 A 【试题解析】 软件测试的目的是暴露错误,评价程序的可靠性。软件调试的目的是发现错误的位置,并改正错误。软件测试和调试不是同一

17、个概念。 7 【正确答案】 B 【试题解析】 耦合性是模块问互相连接的紧密程度的度量;内聚性是一个模块内部各个元素问彼此结合的紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性 ,这样有利于提高模块的独立性。 8 【正确答案】 A 【试题解析】 数据库应用系统中的一个核心问题就是设计一个能满足用户需求、性能良好的数据库,这就是数据库设计。 9 【正确答案】 B 【试题解析】 专门的关系运算有 3种:投影、选择和联接。选择运算是从关系中找出满足给定条件的那些元组,其中的条件是以逻辑表达式给出的,值为真的元组将被选取,这种运算是从水平方向抽取

18、元组。投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于对关系进行垂直分解。联接运算是二目运算,需 要两个关系作为操作对象。 10 【正确答案】 C 【试题解析】 数据库逻辑设计的主要工作是将 ER图转换成指定 RDBMS中的关系模式。从 ER图到关系模式的转换是比较直接的。实体与联系都可以表示成关系, ER图中属性也可以转换成关系的属性。实体集也可以转换成关系。 11 【正确答案】 C 【试题解析】 重载函数至少要在参数个数或参数类型上有所不同。如果只是返回值类型不同,而其他完全相同 (参数个数及类型 ),会造成 c+编译器无法区分它们,则不能作为重载函数来使用

19、。 12 【正确答案】 B 【试题解析】 常量是指在程序执行过程中值不改变的量。因为 a是常量类型,而a的 SetData成员函数会造成 a的值被改变,所以 B)项调用错误 13 【正确答案】 A 【试题解析】 基类中的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访问基类中的私有成员。 ChildA是 Parents的派生类,则 a可以访问 Parents的公有变量,但不可访问 Parents的私有变量。所以 A)项正确, B)项错误。派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员, ChildB从 Parents私有继承,则 Parents的

20、公有变量 publicData在 ChildB中变为私有变量,所以 b不能访问 lublicData,也不能访问privateData。所以 c)项和 D)项错误。 14 【正确答案】 B 【试题解析】 操作数个数、优先级和结合性是运算符的 3个最基本的特性,而且是重载时自然得以保持的特性,因此无须采取专门的措施。所以选 B)。 15 【正确答案】 D 【试题解析】 模板实参的省略在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对 应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表或从模板函数实参表,模板实参的信息优先于函数实参的信息。因此, A)选项是正确的。

21、下面列举几种模板实参不能省略的情况。 从模板函数实参表获得的信息矛盾。 需要获得特定类型的返回值,而不管参数的类型如何。 虚拟类型参数没有出现在模板函数的形参表中。 函数模板含有常规形参。由 3和 4可以看出选项 B)、 c)是正确的,因此选 D)。如果模板实参表中的实参都被省略了,则连空表也可以不要,也就是说模板参数表可以为空。 16 【正确答案】 A 【试题解析】 open是 ifstream的成员函数,只能用对象 fin去调用,不能用类调用。故选项 A)错误。 17 【正确答案】 B 【试题解析】 面向对象思想的 3个主要特征是:封装性、继承性和多态性。其中封装性是指将数据和算法捆绑成一

22、个整体,这个整体就是对象,描述对象的数据被封装在其内部;继承性是指一种事物保留了另一种事物的全部特征,并且具有自身的独有特征:多态性是指当多种事务继承自一种事物时,同一种操作在它们之间表现出不同的行为。 18 【正确答案】 C 【试题解析】 在一般情况下,变量的作用域与 其生存期一致。但由于 c+语言允许在程序的不同部分为不同变量取同一名字,因此一个变量名的作用域可能小于其生存期。全局变量 i和 j对于 35行是不起作用的。则第 4行的 tout输出 i值为 8, j值为 j=i=8。所以输出结果为 88。 19 【正确答案】 A 【试题解析】 语句 while(int i=O)是重新定义了一

23、个变量 i,并赋值为 O,因此while循环条件为假,不执行循环体,所以不会输出 “*”。 20 【正确答案】 A 【试题解析】 字符数组不能直接赋值,所以选项 A)错误。 21 【正确答 案】 D 【试题解析】 重载函数至少要在参数个数或参数类型上有所不同。选项 D)的重载函数只有返回值不同,其他 (参数个数及类型 )完全相同。因此,本题答案为D)。 22 【正确答案】 B 【试题解析】 构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一种特定的状态,使该对象具有区别于其他对象的特征。构造函数在对象被创建的时候由系统自动调用。故答案选 B)。 23 【正确答案】 A 【试题

24、解析】 基类中的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访 问基类中的私有成员,故 B)项和 D)项错误。派生类从基类私有继承时基类的公有成员和保护成员在派生类中都改变为私有成员,所以派生类对象不能直接访问私有继承基类的公有成员,故 c)选项错误。本题答案为 A)。 (24) 24 【正确答案】 D 【试题解析】 在类内部定义重载 “+”运算符,函数格式为:类名&operator+( )。因此调用该函数的格式应该为: a operator+( )。 25 【正确答案】 C 【试题解析】 声明一个函数模板的格式是: template。故答案选 c)。 26 【正确答案】

25、 A 【试题解析】 在默认情况下,与 ifstream流对象关联的文件将以 in模式打开,该模式允许文件进行读操作;与 ofstream关联的文件则以 out模式打开,使文件可写。 27 【正确答案】 A 【试题解析】 定义 x、 y时调用构造函数使 x a为 “abcd”, x b=dl=6; y a为“weirong”, y b=c12=8。所以 strlen(x Geta( )等于 p1的长度 4, y Getb( )等于 8。 4+8=12,所以输出结果为 12。 28 【正确答案】 B 【试题解析】 在主函数中 XCF d1(5), d2(d1);, d1调用了第一个构造函数,输出

26、1; d2调用了拷贝构造函数,输出 2; xcF*pd=IleW XCF(8);调用了构造函数,输出 l; coutGeta( );调用了成员函数 Geta( ),输出 8; delete pd;调用了析构函数,输出 8; return 0;,在返回 O之前程序会自动调用 d1和 d2的析构函数,输出 55。因此总的输出应该是 1218855。 29 【正确答案】 C 【试题解析】 MyClass类中只定义了一个构造函数,即 Myclass(int k): n(k),这个构造函数只有一个形参,因此 A)选项错误;类中并没有提供有 “MyClass*”类型转化为 “MyClass”类型的功能,因

27、此 B)选项错误;同理,类中也没有提供“MyClass”类型转化为 “My-Class*”类型的功能, D)选项错误。 C选项是定义了一个指向 MyClass类型的指针数组,故本题选 c)。 30 【正确答案】 B 【试题解析】 类 BB是公有继承基类 AA的,因此在 AA类中的保护成员,在BB类中是私有成员,因此 1和 4是错误的。 AA类中的私有成员 BB类不能调用,因此 3是错误的,只有 2是正确的。故本题答案为 B)。 31 【正确答案】 D 【试题解析】 建立派生类对象时,构值函数的执行顺序为:执行基类的构造函数一执行成员对象的构造函数一执行派生类的构造函数。 D)选项定义对象 y4

28、时没有传人任何值,则先调用基类的构造函数 XX( ),输出 A。,然后调用派生类的构造函数 YY( ),输出 yy=0,最终输出为 A0。故本题答案为 D)。 32 【正确答案】 D 【试题解析】 函数 f( )是虚函数,函数 g( )不是虚函 数,因此当指向派生类的指针调用基类的对象时,会调用派生类的虚函数 f( ),但还是会调用基类的成员函数g( ),因此会输出 32。 33 【正确答案】 A 【试题解析】 题目要求先比较 m的大小。其次比较 n的大小,首先看函数定义bool operator(Pairp)corlst,从中可以看出 B)和 D)选项和函数定义不一致,缺少const,故排除

29、;选项 c只有一层比较不符合题意,故排除 C)选项。因此,本题答案为 A)。 34 【正确答案】 C 【试题解析】 因为选项 c)中间只设置了 6个长度,因此 会输出 123*321,而其他选项会输出 123*32l。 35 【正确答案】 B 【试题解析】 在主函数中 TWO t(4),首先调用 TWO类的构造函数 TwO(int m): one2(m)eout3; ,该构造函数使用成员列表初始化,因此在调用函数体前会先给私有成员赋值,然后调用 ONE的构造函数 ONE(int n):c(n)cout2; ,因此会先输出 2,其次输出 3,故本题答案为 B)。 36 【正确答案】 20 【试题

30、解析】 与一般的线性表一样,在程序设计语言中,用 一维数组 s(1, m)作为栈的顺序存储空间,其中 m为栈的最大容量。通常,栈底指针指向栈空间的栈中的元素个数等于 (栈底指针一栈顶指针 +1),即 49-30+1=20。 37 【正确答案】 白盒 【试题解析】 黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测及因果图等。白盒测试的墓本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件 下至少各执行一次;验证所有内部数据

31、结构的有效性。白盒测试的主要方法有逻辑覆盖和基本路径测试等。 38 【正确答案】 顺序结构 【试题解析】 结构化程序设计的 3种基本逻辑结构为顺序结构、选择结构和循环结构。顺序结构是一种简单的程序设计结构,它是最基本、最常用的程序设计结构;选择结构又称为分支结构,包括简单分支和多分支选择结构;循环结构也叫重复结构,它根据给定的条件,判断是否需要重复执行某一相同的程序段。 39 【正确答案】 数据库管理系统 【试题解析】 数据库管理系统可以对数据库的建立、使 用和维护进行管理,是数据库系统的核心。 40 【正确答案】 菱形 【试题解析】 在 ER图中,用矩形框表示实体,框内标明实体名;用椭圆框表

32、示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内表明联系名。 41 【正确答案】 213 【试题解析】 运算符 “”是异或运算符。 1、 2和 3分别用二进制表示为 0001、0010和 001l,先看要输出的数据 x=00010011=0010,即 2;然后是y=00100011=0001,即 l; z=00010010=0011,即 3,因此输出 213。 42 【正确答案】 15, 30, 45, 【试题解析】 程序输出 1到 50中同时被 3和 5整除的数,为 15、 30、 45。 43 【正确答案】 exam 【试题解析】 程序输出字符串时会默认遇到 0时结束输出。 c

33、4=0,把第 5个字符设定为 0,因此程序输出字符数组 c时只输出前 4个字符: exam。 44 【正确答案】 10 【试题解析】 此递归函数的终止条件是 n=0,当 n=10时,递归调用 sum(9);n=9时,递归调用 sum(8);依次类推,当 n=l时,递归调用 sum(0),此时 n=0返回。因此程序递归调用了 sum(9)、 sum(8)、 、 sum(0)等 10次 sum函数。 45 【正确答案】 友元 【试题解析】 友元函数不是当前类的成员函数,而是独立于当前类的外部函数(包括普通函数和其他类的成员函数 ),但它可以访问该类的所有对象的成员,包括私有成员、保护成员和公有成员

34、。 46 【正确答案】 mOB(c), id(i) 【试题解析】 要填写的是 Computer-类的构造函数。该构造函数使用成员列表初始化。 47 【正确答案】 Dog speak Voice 【试题解析】 基类中有两个虚函数 getType( )和 getVoiee( ),在派生类中同样也有。函数 type和 speak的形参都是 Animal类的对象,但是一个是引用调用,另一个不是。当用 Animal的派生类 Dog类定义的对象调用这两个函数时, type函数会转向: Dog类中的成员函数,而 speak函数不会。 48 【正确答案】 virtual double Area( )=O; 【试题解析】 对纯虚函数的声明,先看派生类的该函数的声明: virtual double Area( ), 所以应该为: virtual doubleArea( )=0;。 49 【正确答案】 return XCH(A) 【试题解析】 要函数返回的是 XCH&类型,因此这里要调用 XCH构造函数定义一个临时的 XCH对象作为返回值。 50 【正确答案】 Type Xtwo 【试题解析】 类外函数要先定义函数返回类型 Type,其次要加上类名和作用域Xtwo。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1