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

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

1、2012年 9月国家二级( C+)笔试真题试卷及答案与解析 1 下列链表中,其逻辑结构属于非线性结构的是 ( A)双向链表 ( B)带链的栈 ( C)二叉链表 ( D)循环链表 2 设循环队列的存储空间为 Q(1: 35),初始状态为 front=rear=35。现经过一系列入队与退队运算后, front=1 5, rear=15,则循环队列中的元素个数为 ( A) 20 ( B) 0或 35 ( C) 15 ( D) 16 3 下列关于栈的叙述中,正确的是 ( A)栈底元素一定是最后入栈的元素 ( B)栈操作遵循先 进后出的原则 ( C)栈顶元素一定是最先入栈的元素 ( D)以上三种说法都不

2、对 4 在关系数据库中,用来表示实体间联系的是 ( A)网状结构 ( B)树状结构 ( C)属性 ( D)二维表 5 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是 ( A) 1: m联系 ( B) m: n联系 ( C) 1: 1联系 ( D) m: 1联系 6 有两个关系 R和 S如下: 则由关系 R得到关系 S的操作是 ( A)自然连接 ( B)并列 ( C)选择 ( D)投影 7 数据字典 (D-D)所定义的对象都包含于 ( A)软件结构图 ( B)方框图 ( C)数据流图 (DFD图 ) ( D)程序流程图 8 软件需求规格说

3、明书的作用不包括 ( A)软件设计的依据 ( B)软件可行性研究的依据 ( C)软件验收的依据 ( D)用户与开发人员对软件要做什么的共同理解 9 下面属于黑盒测试方法的是 ( A)边界值分析 ( B)路径覆盖 ( C)语句覆盖 ( D)逻辑覆盖 10 下面不属于软件设计阶段任务的是 ( A)制定软件确认测试计划 ( B)数据库设计 ( C)软件总体 设计 ( D)算法设计 11 下列关于函数重载的叙述中,错误的是 ( A)重载函数的参数个数可以不同 ( B)重载函数的参数类型可以不同 ( C)重载函数的返回值类型必须不同 ( D)重载函数的参数个数或参数类型必须有所不同 12 下列关于类成员

4、对象构造函数调用顺序的叙述中,正确的是 ( A)与它们在初始化列表中的顺序相同 ( B)与它们在类中声明的顺序相同 ( C)与析构函数的调用顺序相同 ( D)顺序不确定 13 下列关于派生类的叙述中,错误的是 ( A)派生类至少要有一个基类 ( B)派生 类中包括了从基类继承的成员 ( C)一个派生类可以作为另一个派生类的基类 ( D)基类成员被派生类继承以后访问权限保持不变 14 下列关于运算符重载的叙述中,正确的是 ( A)通过运算符重载机制可以为 C+语言扩充新的运算符 ( B)运算符重载的作用是使已有的运算符作用于类的对象 ( C)重载运算符的操作数类型可以全部为基本类型 ( D)所有

5、运算符都可以被重载 15 下列关于模板的叙述中,错误的是 ( A)调用模板函数时,有时可以省略模板实参 ( B)函数模板的每个实例就是一个函数定义 ( C)类模 板的每个实例就是一个类定义 ( D)类模板的实例是一个类对象 16 下列关于输入输出流的叙述中,正确的是 ( A)一个文件流可以与一个数据文件相联系 ( B) cin是专门从键盘输入数据的输入流类 ( C)流运算符 using namespace std; int main() char a: cina; if(a=*) coutn; int an: ( D) const int size=10; int asize; 21 假设函数

6、 fun已经定义,其原型为 “void fun(int a, int b=7, char*p=*); ”下列函数调用中错误的是 ( A) fun(5) ( B) fun(5, 8) ( C) fun(6#) ( D) fun(0, 0, “=”) 22 已知函数 print()没有返回值,如果在类中将 之声明为常成员函数,正确的是 ( A) void print(1 const; ( B) const void print(); ( C) 1void const print(); ( D) void print(const); 23 已知基类 Employee只有一个构造函数,其定义如下: E

7、mployee:Employee(int n): id(n)Manager是 Employee的派生类,则 F列对 Manager的构造函数的定义中,正确的是 ( A) Manager: Manager(int n): id(n) ( B) Manager: Manager(int n)id=n; ( C) Manager: Manager(int n): Employee(n) ( D) Manager: Manager(int n)Employee(n); 24 已知将运算符 “+”和 “*”作为类 Complex的成员函数重载,设 c1和 c2是类Complex的对象,则表达式 cl+c

8、2*c1等价于 ( A) c1 operator*(c2 operator+(c1) ( B) c1 operator+(c2 operator*(c1) ( C) c1 operator*(c 1 operator+(c2) ( D) c2 operator+(c1operator*(c 1) 25 下列类模板的定义中语法格式错误的是 ( A) templateclass Buffer * ; ( B) templateclass Buffer * ; ( C) templateclass Buffer * ( D) templateclass Buffer * ; 26 在 C+中既可以用

9、于文件输入又可以用于文件输出的流类是 ( A) fstream ( B) ifstream ( C) ofstream ( D) iostream 27 有如下类定义: class MyClass int b: char a; double c; public: MyClass0: c(0 0), b(0), a(, ) ; 创建这个类的对象时,数据成员的初始化顺序是 ( A) a,b, c ( B) c,b, a ( C) b, a, c ( D) c, a, b 28 有如下类定义: class MyClass int x: public: MyClass0: x(0), y(0) int

10、 GetX0return x; void SetX(int xx)x=xx; int y; : 已知 obj是类 MyClass的对象,下列语句中违反类成员访问控制权限的 ( A) obj X ( B) obj y ( C) obj Getx() ( D) obj Setx(0) 29 有如下类定义: class Test char a: const char b: public: Test(char c)a=c; b=c; 第 1行 void f(char a)constthis a=a; 第 2行 void g(char b)this一 b=b; 第 3行 char h()constret

11、urn a; 第 4行 ; 编译时没有错误的行是 ( A)第 1行 ( B)第 2行 ( C)第 3行 ( D)第 4行 30 有如下程序: #include using namespace std; class A public: A()coutA; -A()coutC; ; class B: public A public: B()coutT; ; int main() B obj; return 0: 运行这个程序的输出结果是 ( A) GATC ( B) AGTC ( C) GACT ( D) AGCT 31 有如下程序: #include using namespace std; c

12、lass Base public: void fun()coutfun(); 32 有如下程序: #include using namespace std; class B public: virtual void f()coutf0; p一 g(); int main() D obj; h(&0bj); return 0: 运行这个程序的输出结果是 ( A) DD ( B) BB ( C) BD ( D) DB 33 有如下程序: #include #include using namespace std; class MyString public: char str80; MyStrin

13、g(const char*s)strcpy(str, s); MyString&operator+=(MyString a) strcat(str, a str); return*this; : ostream&operator【 1】 。 37 设栈的存储空间为 S(1: 40),初始状态为 bottom=0, top=0,现经过一系列入栈与出栈运算后, top=20,则当前栈中有 【 2】 个元素。 38 数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局 部逻辑结构编写的应用程序不必修改,称为 【 3】 。 39 关系数据库中能实现的专门关系运

14、算包括 【 4】 、连接和投影。 40 软件按功能通常可以分为应用软件、系统软件和支撑软件 (或工具软件 )。 Unix操作系统属于 【 5】 软件。 41 若有定义语句 “int x=10; ”,则表达式 “x【 6】 42 下列语句的作用是计算正整数 n的各位数字之和,例如: n=123, sum=1+2+3。请将下列语句补充完整。 Do Sum+=【 7】 : n=n 10; )while(n!=0) 43 有如下程序: #include using namespace std; void fun(int&x, int y) Y=y+x; x=y 4; X+: 111t maim): i

15、nt x=4 y=5: fun(x, y): cout【 8】 。 44 有如下程序 #inchMe using namespace std: class A: public: A()eout【 9】 。 45 若下列程序的输出结果是 20,请将横线处缺失部分补充完整。 #include using namespace std; class MyCIaSS public: MyClass(int x=10): value(x) old SetValue(int x)value=x; cout【 10】 通过对象指针 plr调用 SetValue函数 delete ptr: reltlrn 0:

16、 46 下列程序的输出结果是 2334,请将横线处缺失部分补充完整 #include【 12】 实现的。 48 有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。若在一个重载的运算符函数的定义中成功地使用了 this指针,说明它是作为 【 13】 重载的 49 有如下程序: using namespace std; template T Add(T vl, T v2)retum vl+v2; ) int main() cout【 14】 。 50 有如下程序: using namespace std; class Point double x, y; Point(double xx=

17、0 0, double yy=0 0): x(xx), y(yy) double getX0constreturn x; double getY0constreturn y; void show()constcout(, ); ) ; class Line Point p1, p2; Line(Point pp1, Point pp2): p1(pp 1), p2(pp2) Point LeflMostOconst if(p 1 getX0【 15】 。 2012年 9月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 C 【试题解析】 二叉链表作为树的存储结构。链表中结点的两个链域

18、分别指向该结点的第一个孩子结点和下一个兄弟结点。 2 【正确答案】 B 【试题解析】 循环队列的当前指针和尾指针都等于 15,此循环队列中元素的个数有两种情况,第一种情况是当前指针和尾指针都是第一次到达 15,此时元素个数为 0;第二种情况是当前指针第一次到达 15,而尾指针第二次到达 15,此时元素个数为 35。 3 【正确答案】 B 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出 ”的规则操作元素。 4 【正确答案】 D 【试题解析】 在关系数据库中,实体间的联系由一个二维表来表示。 5 【正确答 案】 A 【试题解析】 一个部门可以有多名员工,所以实体部

19、门和职员间的联系是 1: m联系。 6 【正确答案】 C 【试题解析】 关系 S是由关系 R中的一行元组组成,应通过选择运算得到。 7 【正确答案】 C 【试题解析】 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。 8 【正确答案】 B 【试题解析】 软件规格说明书主要有三个作用: 用户和软件开发人员之间的合同; 开发人员进行设计 和编程的依据; 软件工程项目验收的依据。 9 【正确答案】 A 【试题解析】 采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 10

20、【正确答案】 A 【试题解析】 软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题,一一解释,形成详细设计文档,并根据功能要求,定制相应数据结构、各种流程图等,为下一步编码做准备。 11 【正确答案】 C 【试题解析】 两个或两个以上 的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。 12 【正确答案】 B 【试题解析】 类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的。 13

21、【正确答案】 D 【试题解析】 派生类对象对基类成员的访问权限: 对于公有继承,只有基类的公有成员可以被派生类对象访问,其他 (保护和私有 )成员不能被访问。 对于私有继承和保护继承,基类中所有成员都不能被派 生类对象访问。派生类对基类成员的访问权限: 对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。 对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。 14 【正确答案】 B 【试题解析】 运算符重载就是赋予已有的运算符多重含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,这便增强了 C+语言的扩充

22、能力。运算符重载要注意以下 3点: 不能重载的运算符包括:, * , ?; 必须重载为成员函数的运算符包括口, (), 一 , *; 在类成员函数中重载运算符是不允许返回引用的,会出现 “返回局部变量的地址 ”警告。 15 【正确答案】 D 【试题解析】 在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例。 16 【正确答案】 A 【试题解析】 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的流对象,另一个是文件对象。程序建立一个流对象,并指定这个流对象与某个文件

23、对象建立连接,程序 操作流对象,流对象通过文件系统对所连接的文件对象产生作用。 17 【正确答案】 A 【试题解析】 标识符的命名规则: 所有标识符必须由一个字母 (az或 AZ)或下划线 ()开头; 标识符的其他部分可以用字母、下划线或数字 (09)组成; 大小写字母表示不同意义,即代表不同的标识符,如 cout和 Com; 18 【正确答案】 C 【试题解析】 实型常量指的是 float和 double两种数据类型,而 signed和unsigned只对整型数起作用,用于确定它们的数据范围 (例如 16位系统中,一个signed int是 -32768 32767,而 unsigned i

24、nt是 0 65535)。 unsigned对浮点数是无意义的。 19 【正确答案】 A 【试题解析】 本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条件的判定。双分支选择语句的执行流程是首先计算 if后表达式的值,如果表达式的值为非零,则执行 if后面的分支,否则执行与其匹配的 else后面的分支。本题执行时虽然输入变量 a的值为 +,但是在执行 if后括号内表达式 (a=*)的时,由于此表达式为赋值表达式,因此表达式的值为赋值号 右边的值 “*“,其 ASCII码的值非零,执行 if后面的输出语句 “*”后回车。 20 【正确答案】 D 【试题解析】 定义一维数组的一般格式为:

25、类型标识符数组名 常量表达式 ;常量表达式的值表示元素的个数,即数组长度。常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说, C+不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。 21 【正确答案】 C 【试题解析】 根据函数 fun()的定义,其前两个形参为整型变量,第三个形参为字符型变量。所以在调 用时,必须符合形参的数据类型,而选项 C)的第二个实参的数据类型为字符串,不符合第二个形参的数据类型。 22 【正确答案】 A 【试题解析】 const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义 const成员函数时,把 co

26、nst关键字放在函数的参数表和函数体之间。 23 【正确答案】 C 【试题解析】 基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生类的构造函数名后面显示的调用基类的构造函数。 24 【正确答案】 B 【试题解析】 表达式 c1+c2*c1的含义是 c1加上 c2与 c的积。 25 【正确答案】 D 【试题解析】 定义类模板的一般形式是: templateclass 类名 类声明体 ;模板的类型参数由关键字 class或关键字typename及其后的标识符构成。在模板参数表中关键字 class和 typename的意义相同。 26 【正确答案】 A 【试题解析】 文件流以磁盘文件以及

27、其他可按文件方式进行管理的外部设备为输入输出对象。 ifstream是文件输入流类, ofstream是文件输出流 类, fstream是文件输入输出流类,当使用 cin、 cout的预定义流对象进行针对标准设备的 I O操作,则需要使用 iostream文件。 27 【正确答案】 C 【试题解析】 类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。 28 【正确答案】 A 【试题解析】 由类 MyClass的定义可知,数据成员 x属于私有成员,所以只能在类的内部访问。类 MyClass的对象 obj不能访问类 MyClass的私有成员 x。 2

28、9 【正确答案】 D 【试题解析】 类 Test中的常成员函数 hO返回数据成员 a的值。 30 【正确答案】 B 【试题解析】 派生类 B是由基类 A公开继承而来,所以在创建类 B的 obj对象时,首先执行基类 A的构造函数 A(),输出 A,再执行派生类 B的构造函数 BO,输出 G,当程序结束时,首先执行派生类的析构函数 -BO,输出 T,再执行基类 A的析构函数一 AO,输出 C。 31 【正确答案】 C 【试题解析】 派生类 Derived的对象 d调用其成员函数 fun(),要输出结果为BD,所以在其成员函数 fun()中要调用基类 Base的成员函数 fun()。 32 【正确答

29、案】 D 【试题解析】 在基类 B中定义虚函数 f()和成员函数 g(),而在派生类 D中定义了函数 f()和同名函数 g()。而函数 h中的形参为指向基类的指针变量 p,所以在主函数中执行 h( obj)时,会调用派生类的函数 f(),输出 D,再调用基类的函数 gO,输出 B。 33 【正确答案】 D 【试题解析】 在类 MyString中,定义了带参数的构造函数 MyString(const char*s),其作用是把 s指向的字符串拷贝到字符组 s仃中。在类中还对运算 +:进行重载定义,其作用是把字符串 str和 a相连接并赋给 str,所以在主函数中执行x+=y时,结果为 abccd

30、e. 34 【正确答案】 A 【试题解析】 setfill是设置填充字符, setw设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以 cout#) 35 【正确答案】 B 【试题解析】 由这个语句序列显示的结果是 BD,说明执行了 cout=1)个结点。所以第一层上最多 1个结点,第二层上最多 2个结点,第三层上最多 4个结点,第四层上最多 8个结点,第 5层上最多 16个结点。前 5层的总共结点个数等于 31,而本题度为 2的结点个数为 23,因此第 5层上只能有 8个度为 2的结点,即在第 6层上还有 16个度为 0的结点。 37 【正确答案】 20 【试

31、题解析】 栈是先进后出的数据结构,所以当栈顶指针 top等于 20时,当前栈中的元素个数等于 20。 38 【正确答案 】 逻辑独立性 【试题解析】 数据独立性是指当总体逻辑结构改变时,其局部逻辑结构不变,从而根据局部逻辑结构编写的应用程序不必修改。 39 【正确答案】 选择 【试题解析】 关系数据库中能实现的专门关系运算包括:选择、连接和投影。 40 【正确答案】 系统 【试题解析】 LJnix操作系统属于系统软件。 41 【正确答案】 20 【试题解析】 由于变量 x的值等于 10,所以条件表达式 “xSetValue(20); 【试题解析】 本题的考点是如何利用指针变量来访问对象的公有成

32、员。利用指针变量访问对象公有成员函数的方法是:指针变量 -公有成员函 数 (实参 );所给的程序中,类 MyClass有私有数据 value、公有构造函数以及公有成员函数 SetValue。主函数中创建 MyClass实例指针 ptr调用 SetValue函数输出数据的形式: ptr-SetValue(20);。 46 【正确答案】 Base(k-1) 【试题解析】 在派生类 Derived的构造函数中显示的调用类基的构造函数Base(k-1)。 47 【正确答案】 重载 【试题解析】 在 C+中,编译时的多态性是通过模板或函数的重载实现的。 48 【正确答案】 成员函 数 【试题解析】 运算

33、符函数作为成员函数时,第一操作数就是对象本身,并不显式地出现在参数表中,即第一操作数仅以 this指针的形式隐含存在于参数表中;而非成员函数由于没有隐含 this指针,因此所有的操作数必须出现参数表中。【 14】 49 【正确答案】 5, 5 8 【试题解析】 程序中定义了模板函数 Add,所以 Add(2,3)的结果等于 5,Add(2 3,3 51的结果等于 5 8。 50 【正确答案】 3 1, 5 2 【试题解析】 在类 Line中定义成员函数 LestMost(),如何第 一点的横坐标小于等于第二点的横坐标,则返回第一点,否则返回第二点。所以在主函数中执行“line LeftMost0 show(); ”语句,返回第一个点的坐标即 (3 1, 5 2)。

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

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

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