[计算机类试卷]国家二级(C++)笔试模拟试卷139及答案与解析.doc

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

1、国家二级( C+)笔试模拟试卷 139及答案与解析 1 算法的时间复杂度是指 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法程序中的指令条数 ( D)算法执行过程中所需要的基本运算次数 2 设栈 S的初始状态为空。元素 a, b, c, d, e, f依次通过栈 S,若出栈的顺序为b, d, c, f, e, a,则栈 S的容量至少应该为 ( A) 3 ( B) 4 ( C) 5 ( D) 6 3 在最坏情况下,下列排序方法中时间复杂度最小的是 ( A)冒泡排序 ( B)快速排序 ( C)插入排序 ( D)堆排序 4 在模块化程序设计中,按功能划分模块的原则是 ( A)

2、各模块的功能尽量单一,且各模块之间的联系尽量的少 ( B)各模块的功能尽量单一,且各模块之间的联系尽量紧密 ( C)各模块应包括尽量多的功能 ( D)各模块应包括尽量多的输入输出操作 5 数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是 ( A)线性链表 ( B)二叉链表 ( C)栈与队列 ( D)循环队列 6 下列叙述中正确的是 ( A)软件就是程序清单 ( B)软件就是存放在计算机中的文件 ( C)软件 应包括程序清单以及运行结果 ( D)软件包括程序、数据和文档 7 在结构化方法中,软件功能分解属于下列软件开发中的阶段是 ( A)概要设计 ( B)需求分析 ( C)详细设

3、计 ( D)编程调试 8 下列叙述中正确的是 ( A)程序设计过程中的主要工作是编制程序 ( B)程序设计的主要目标是编制出运行结果正确的程序 ( C)不良的程序设计风格会增加程序的复杂性 ( D)上述三种说法都不对 9 下列叙述中正确的是 ( A)用 E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系 ( B) 用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 10 关系表中的每一横行称为一个 ( A)元组 ( B)字段 ( C)属性 ( D)码 11 一个函数为 vo

4、id f(int, charch=a),另一个函数为 void f(int),则它们 ( A)不能在同一程序中定义 ( B)可以在同一程序中定义并可重载 ( C)可以在同一程序中定义,但不可以重载 ( D)以上说法均不正确 12 下面关于对 象概念的描述中,错误的是 ( A) C+中的对象就是 C语言中的结构变量 ( B)对象代表着正在创建的系统中的一个实体 ( C)对象是一个状态和操作 (或方法 )的封装体 ( D)对象之间的信息传递是通过消息进行的 13 实现运行时的多态性要使用 ( A)重载函数 ( B)析构函数 ( C)构造函数 ( D)虚函数 14 若有定义: int k, *q;,

5、则下列各选项中赋值表达式正确的是 ( A) q=(void sub(int x, int y, int *z) *z = y+x;int main () int a,b, c; sub8,4. sub (6, a, sub (a.b, cout a “ , “ b “, “ c end1; return 0; 程序运行后的输出结果是 ( A) 12,18,30 ( B) -12,6,8 ( C) 6,8,10 ( D) 12,-18,16 22 在下面的类定义中,错误的语句是 class Sample public: Sample(int val); / Sample(): / private

6、: int a=2.5; / Sample(); / ; ( A) ( B) ( C) ( D) 23 下面的描述中表达错误的是 ( A)公有继承时基类中的 public成员在派生类中仍是 public的 ( B)公有继承时基类中的 private成员在派生类中仍是 private的 ( C)公有继承时基类中的 protected成员在派生类中仍是 protected的 ( D)私有继承时基类中的 public成员在派生类中是 private的 24 运算符函数调用格式的表达式: y/x+与表达式: y. operator/(operator+(x,0)含义相同,由此可看出 ()。 ( A)

7、“/”和 “+”都是作为成员函数重载的 ( B) “/”和 “+”都是作为非成员函数重载的 ( C) “/”是作为成员函数重载的, “+”是作为非成员函数重载的 ( D) “/”是作为非成员函数重载的, “+”都是作为成员函数重载的 25 有如下函数模板定义: template typename T1, int a2, int a3 T1 sum(T1 a1) return(a1+a2+a3); 则以下调用中正确的是 ( A) sum int,4,3 (5); ( B) sum 4,3 (5); ( C) sum int,int,int (5); ( D) sum(5); 26 有如下程序:

8、#include iostream using namespace std; int main() cout. fill(*); cout. width(5); cout scientific 314.15 926535 end1; return 0; 程序运行后,输出的结果是 ( A) 3.141593e+002 ( B) 3.1416e+002 ( C) *3.14e+002 ( D) 314.16 27 假定 MyClass为一个类,那么下列的函数说明中, ( )为该类的析构函数。 ( A) void MyClass(); ( B) MyClass(int n); ( C) MyClas

9、s(); ( D) MyClass(); 28 有以下程序: #include iostream using namespace std;class sampleprivate: int n;public: sample() sample(int m) n=m; sample add(sample s1,sample s2) this- n-s1.n+s2.n; return (*this); void disp() cout “n=“ n end1; ;int main ( sample s1(10),s2(5),s3; s3.add(s1,s2); s3.disp (); return 0

10、;程序运行后,输出的结果是 ( A) n=10 ( B) n=5 ( C) n=20 ( D) n=15 29 有以下程序: #include iostream using namespace std;class sampleprivate: int x; static int y;public: sample(int a) ; static void print(sample s);sample: sample(int a) x=a; y+=x;void sample:print(sample s) cout “x=“ s. x “, y=“ y end1;int sampte:y=0;in

11、t main() sample s1(10); sample s2(20); sample:print(s2); return 0;程序运行后的输出结果是 ( A) x=10,y=20 ( B) x=20,y=30 ( C) x=30,y=20 ( D) x=30,y=30 30 若有以下程序: #include iostream using namespace std; class A private: int x;public: int z; void setx(int i) x=i; int getx () return x; :class B : public Aprivate: in

12、t m;public: int p; void setvalue(int a, int b, int c) setx(a) ; z=b; m=c; void display) cout getx () “, “ z “, “ m end1; ;int main() B obj; obj. setvalue(2,3,4); obj.display(); return 0; 程序运行以后的输出结果是 ( A)产生语法错误 ( B) 2,3,4 ( C) 2,2,2 ( D) 4,3,2 31 为完成下面的程序,应在划线处填入的语句是 #include iostream using namespac

13、e std; class Base private: int x; public: Base(int i) x=i; Base() ; class Derived: public Base public: _ /完成类 Derive构造函数的定义 ; int main() Derived obj; return 0; ( A) Derived(int i): Base(i) ( B) Derived() ( C) Void Derived (int i): Base(i) ( D) Denved(int i)Base(i); 32 若有以下程序: #include iostream using

14、 namespace std; class A private: int a; public: void seta(int x) a=x; void showa() cout a “, “; ; class B private: int b; public: void setb (int x) b=x; void showb() cout b “, “; ; class C : public A, private B private: int c; public: void setc(int x, inc y, int z) c=z; seta (x); setb (y); void show

15、c() showa (); showb (); cout c end1; ; int main () C c; c. setc(1,2,3); c.showc(); return 0; 程序执行后的输出结果是 ( A) 1,2,3 ( B) 1, 1, 1 ( C) 2,2,2 ( D) 3,3,3 33 以下运算符中不能重载的运算符是 ( A) new ( B) sizeof ( C) .* ( D) + 34 执行语句序列 ofstream outfite(“data.dat“); if(.)cout “ok“; else cout“fail“; 后,如果文件打开成功,显示 “ok”,否则

16、显示 “fail”。由此可知,上面 if语句的 “” 处的表达式是 ( A) outfile.fail()或 outfile ( B) outfile.good()或 !outfile ( C) outfile.good()或 outfile ( D) outfile.fail()或 !outfile 35 有如下程 序: #include iostream using namespace std; class sample private: int x,y; public: sample(int i,int j) x=i; y=j; void disp () cout “disp1“ end

17、1; void disp() const cout “disp2“ end1; ;int main () const sample a(1,2); a.disp(); return 0; 该程序运行后的输出结果是 ( A) disp1 ( B) disp2 ( C) disp1 disp2 ( D)程序编译时出错 36 某二叉树中度为 2的结点有 18个,则该二叉树中有 _个叶子结点。 37 在面向对象方法中,类的实例称为 _ 。 38 软件生命周期包括 8个阶段。为了使各时期的任务更明确,又可分为 3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于 _期。 39 一棵二叉树第六层

18、(根结点为第一层 )的结点数最多为 _个。 40 数据库系统中实现各种数据管理功能的核心软件称为 _。 41 下面程序的输出结果是 _。 #include iostream using namespace std; int x; void funA(int return m; 48 下列程序的输出结果是 _。 #include iostream using namespace std; class base public: int n; base(int x) n=x; virtual void set(int m) n=m; cout n ; ; class deriveA: public

19、base public: deriveA(int x): base(x) void set(int m) n += m; cout n ; ; class deriveB: public base public: deriveB(int x): base(x) void set(int m) n + m; cout n ; ; int main() deriveA d1(1); deriveB d2(3); base *pbase; pbase= for(j-;i j i+,j-); return i_j; 50 在下面程序的横线处填上适当的内容,使程序执行后的输出结果为 1/2005。 #i

20、nclude iostream.h using namespace std: class Date public: Date (int m=1,int y=0):month(m .year(y void Print() cout month “/“ year end1; _operator+(const Date private: int month year; ; _operaror+(const Date year=d1.year+d2.year; month=d1.month+d2.month; year+=(month-1)/12; month=(month-1)%12+l; retu

21、rn Datemonth, year: void main() Date d1(3,2004),d2,d3(10); d2=d3+d1; d2.Print(); 51 在下面程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD。 #include iostream.h using namespace std; class A public: A() cout A; ; class B:_ public: B() cout B; ; class C:_ public: C( cout C; ; class D:public B, public C public: D()cout D;

22、; void main()D obj; 国家二级( C+)笔试模拟试卷 139答案与解析 1 【正确答案】 D 【试题解析】 算法的时间复杂度实际上就是执行算法程序所 需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。选项 A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项 B错误。算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同选项 C错误,因为根据一个算法所编

23、制出的程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指 令条数来度量算法的时间复杂度。所以,本题的正确答案为 D。 2 【正确答案】 A 【试题解析】 根据题中给定的条件,可以作如下的模拟操作: 元素 a, b进栈,栈中有 2个元素,分别为 a, b; 元素 b出栈后,元素 c, d进栈,栈中有 3个元素,分别为 a, c, d; 元素 d, c出栈后,元素 e, f进栈,栈中有 3个元素,分别为 a, e, f; 最后,元素 f, e, a出栈,栈为空。可以看出,进栈的顺序为 a, b, c, d, e, f,出栈的顺序为 b, d, c, f, e, a,满足

24、题目要求。每次进栈操作后,栈中最多有 3个元素,所以,为 了顺利完成这些操作,栈的容量应至少为 3。本题的正确答案为 A。 3 【正确答案】 D 【试题解析】 在最坏情况下:冒泡排序需要的比较次数为 n(n-1)/2;快速排序需要的比较次数也为 n(n-1)/2;插入排序需要的比较次数也为 n(n-1)2;堆排序需要比较的次数为 O(nlog2n)。可知,在最坏情况下,堆排序的时间复杂度最小,本题的正确答案为 D。 4 【正确答案】 A 【试题解析】 模块化设计是指把一个大程序按人们能理解的大小规模进行分解。划分模块的基本原则是使每个模块都易于理解。按照人类思 维的特点,按功能来划分模块最为自

25、然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的联系尽量少。所以,选项 A正确;选项 B错误;选项 C错误。本题的正确答案为 A。 5 【正确答案】 C 【试题解析】 线性链表是线性表的链式存储结构;二叉链表是二又树的链式存储结构;栈与队列分别是特殊的线性表;循环队列是队列的一种顺序存储结构。可知,线性链表、二叉链表、循环队列均属于存储结构,而栈与队列属于逻辑结构。选项 C为正确答案。 6 【正确答案】 D 【试题解析】 计算机软件是计算机系统中与硬件 相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为:软件 =程序 +文档 +数据选项 A、 B、 C错

26、误,正确答案是 D。 7 【正确答案】 A 【试题解析】 概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结构 (如确定模块及模块间的关系 )。设计过程通常分为以下几步:提出可选择方案;选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划;最后提交概要设计文档。软件功能分解属于概要设计阶段。本题的正确答案为A。 8 【正确答案】 C 【试题解析】 程序设计过 程中包括很多步骤,编制程序只是其中的一步。所以,选项 A错误。程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程序是不够的,还应养成良好的程序设计风格。所以,选项 B错误。程序设计的根本目标是要降低程序的

27、复杂性和提高程序的可读性。而程序的复杂性主要来自以下两个方面:问题固有的复杂性;不良的设计风格人为增加了程序的复杂性。所以,良好的设计风格对于降低程序的复杂性是很重要的,并且,好的设计风格是好的程序风格的基本保证。选项 C正确。 9 【正确答案】 A 【试题解析】 用 E-R图可以简单明了地描 述实体及其相互之间的联系,用 E-R图还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系。所以,选项 A正确,选项 B与 C错误。为了建立用户所要求的数据库,必须把概念结构 (用 E-R图表示的概念数据模型 )转换为某个具体的数据库管理系统所支持的数据模型,这就是逻辑结构设计所要完成的任

28、务。在已给定数据库管理系统的情况下,数据库的逻辑设计可以分两步来进行: 将概念模型转换成一般的数据模型; 将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。可知,用 E-R图表示的概念数据模型不仅能转换为关系数据模 型,还可以转换为其他数据模型,如网状模型和层次模型等。所以,选项 D说法错误。 10 【正确答案】 A 【试题解析】 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。关系表中的每一横行称为一个元组。本题的正确答案是 A。 11 【正确答案】 C 【试题解析】 本题函数的调用。只要满足参数列表不同的条件,就可以在同一程序中对同名的函数进行定义。但是由于其中一个

29、函数有默认值,因此当程序中出现语句 “x=f(10); ”时,就会产生二义性,不能确定调用函数 f(10)还是调用函数f(10, a),此时这两个函数不能重载。 12 【正确答案】 A 【试题解析】 本题考核对象的概念。 C+中的对象与 C语言中的结构变量是不一样的。对象是某一类类型的变量,而结构变量是结构类型的变量。同时 C+对C的结构有了扩展,结构可以和类一样使用。结构除了可以包含数据成员外,还可以包含成员函数;成员也可以加上 public、 private和 protected访问控制;结构之间也可以继承。两者惟一的不同之处是,结构中的成员默认是公有的,结构的继承默认是公有的,而类的继承

30、默认是私有的,类的成员默认也是私有 的 13 【正确答案】 D 【试题解析】 本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。 14 【正确答案】 B 【试题解析】 本题考核指针的赋值操作。 A) 选项中, &k表示变量 k在内存中的地址,而后面的 1是整型常量,所以此选项不正确。 C) 选项 中,是把整型变量的值直接赋给指针变量 q,由于赋值没有兼容性,

31、所以这是错误的。 D) 选项中,企图把 k在内存中的地址赋给一个整型变量 (*q在此代表一整型变量 ),这也是不允许的,地址值不能直接转换为一个整数。 15 【正确答案】 A 【试题解析】 本题考核模板的概念。模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 16 【正确答案】 B 【试题解析】 本题考核 C+的输入,输出流。 C+中函数 eof()的作用是进行输入操作时,若到达文件尾返回 true,否则返回 false。 eof函数只能用于输入流操作。 17 【正确答案】 A 【试题解析】 本题考核 C+的标识符定义。 C+规定标识符由大小写字母、数字字符 (

32、0 9)和下划线组成,并且以字母或下划线开始,后跟 0个或多个字母,数字字符或下划线。由此可知 A) 选项中的连接符不能用于组成标识符。 18 【正确答案】 A 【试题解析】 本题考核 C+数据类型中枚举。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点:枚举类型的第一个常量默认值是 0;枚举类型常量的值允许彼此相同;虽然枚 举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。 由此可知枚举常量 NAME的值应为 0。所以 A) 选项是错误的。 19 【正确答案】 A 【试题解析】 本题考查循环语句 do-while

33、语句的执行情况根据 do-while循环语句功能特点可得:首先无条件执行循环体,表达式 x-的值为 5,输出为 5, x的值变为 4,然后检查条件 (!x)为假 (false),则循环结束。 20 【正确答案】 C 【试题解析】 本题考核数组的定义和初始 化。下面逐项进行分析: A) 选项中,数组 a的定义和初始化符合数组的定义和初始化语法,故正确: B) 选项中,数组a初始化的值虽然没有 10个,但对于少的部分,系统会自动补 0,所以 B) 选项中数组的定义也是正确; C) 选项中,数组 a的长度为 5,但字符串 “hello”的长度为5+1=6,字符串结束符 0无法存储在数组中,所以是错误

34、的; D) 选项中,数组 a的定义是正确的。 21 【正确答案】 A 【试题解析】 本题考核对指针作为函数的参数的理解程度。分析程序:函数 sub为 void型。函数的形参中, z是一 个 int型的指针变量,因此它只能从实参接收一个 int型变量的地址。在函数 sub体中,语句: *z=y +x;的功能是把形参 y与 x的和值放入形参 z所指的存储单元中。在主函数中, 3次调用 sub函数。第一次调用时,把 8和 4分别传递给形参 x和 y,把主函数中变量 a的地址传递给形参 z,这样形参就指向了主函数中的变量 a,在 sub函数中执行语句 *z=y/x;后,把 12放入 z所指的存储单元中

35、,即变量 a被赋值 11。以此类推,最后 b被赋值 18, c被赋值 30。所以最后输出是 12, 18, 30。 22 【正确答案】 C 【试 题解析】 本题考核类的定义。 C+不能类的定义中给数据成员赋初值。 23 【正确答案】 B 【试题解析】 C+中,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。所以 B) 选项是错误的。派生类中的成员不能访问基类的中私有成员,但可以访问基类中的公有成员和保护成员。此时派生类对基类中各个成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性,基类中公有和保

36、护成员在派生类中的访问控制属性将随着继承方式而 改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员,派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍然为保护成员所以, A) 、 C) 和 D) 选项都是正确的。 24 【正确答案】 C 【试题解析】 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且 c1、 c2都是该类的对象,则 c1. operator+(c2)与 c1+c2含 义相同。如果 +作为该类的非成员函

37、数重载,则 operator+(c1,c2)与 c1+c2含义相同。所以通过题目给出的两个表达式可看出 “/”是作为成员函数重载的, “+”是作为非成员函数重载的。 25 【正确答案】 A 【试题解析】 本题考核函数模板的使用。 C+中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参 数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中含有常规形参,常规形参的信息无法从模板函数的实参表

38、中获得,因此在调用时必须显式地给出对应于常规参数的模板实参。注意, sum的第一个模板实参的信息可以从模板函数的实参表中获得,但由于它位于不可省略实参的前面,因此不能省略,所以只有 A选项的调用格式是正确的。 26 【正确答案】 A 【试题解析】 本题考核格式控制数据的输入输出函数 setfill (char c) 用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲 位置要用填充字符填满,设置的填充符一直有效,直到再次设置填充字符为止,如题中调用函数 setfill(*)将填充字符设置为 *,后又调用函数 setfill(#)将填充字符设置为 #。函数 setw(int n)用

39、于设置输入输出宽度,当实际数据的宽度大于设置的宽度时,仍按实际的宽度输出, 如题中数据 314. 15926535的宽度大于 5,所以将会按实际输出。关键字 scientific将浮点数按指数格式 (科学表示法 )输出。 27 【正确答案】 D 【试题解析】 本题考核类的析构函数。在 C+中,析构函数名为符号 “ ”加类名,析构函数没有参数和返回值。根据以上知识可知, MyClass类的正确析构函数的说明为 MyClass()。 28 【正确答案】 D 【试题解析】 本题考核 this指针的应用。上述程序中, sample类的 add成员函数中使用了 this指针, this指针指向当前对象自

40、身,该成员函数中的语句: this-n=s1. n+s2.n;,用于修改当前对象的数据成员 n的值,语句: return(*this);用于返回当前对象自身,即对当前对象进行了修改。对于 main()函数调 用 add成员函数语句 “s3.add(s1, s2); ”。此时, this指针指向的是对象 s3,执行该语句前, s3的数据成员 n未赋值,执行完该语句后,就修改了 s3的私有成员 n的值,使其为15。 29 【正确答案】 B 【试题解析】 本题考核静态数据成员和静态成员函数的应用。类 sample中定义两个私有成员 x和 y,其中 y为静态数据成员。并定义函数 print()为静态成

41、员函数。在主函数中,定义对象 s1(10)时,通过构造函数使对象 s1的私有成员 x=10,静态数据成员 y=10。定义 s2(20)时,通过构造 函数使对象 s2的私有成员 x=20,静态数据成员 y=10+20=30。程序最后调用静态成员函数 print输出对象 s2的私有成员 x的值 20,对象 s1、 s2共享的静态数据成员 y的值 30。 30 【正确答案】 B 【试题解析】 本题考核继承与派生。当类的继承方式为公有继承时,基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承来的公有成员。在本题中,数

42、据成员 z和函数 setx都是基类 A的公有成员,它们经过公有继承以后,在派生 类 B中还是公有成员,而派生类 B中的函数 setvalue和 display都是公有成员,可以通过对象对它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是输出已设置的各成员的值。 31 【正确答案】 A 【试题解析】 本题考核派生类中的构造函数。程序中,类 Derived是基类 Base的公有派生。在类 Derived的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。 32 【正确答案】 A 【试题解析】 本题考核派生类的应用。本题中类 A和类 B都是基类。而类 C从类 A公有派生 ,从类

43、 B处私有派生所以类 C中的函数成员可以访问类 A和类 B中的公有成员。在类 C的函数成员 setc中,调用基类 A的函数成员 seta对 A的数据成员 a赋值,还调用了基类 B的函数成员 setb对类 B的数据成员 b赋值,然后对类 C自己的数据成员 c赋值。在类 C的函数成员 showc中,调用基类 A的函数成员 showa显示数据成员 a的值,还调用基类 B的函数成员 showb显示数据成员b的值,然后输出类 C自己的数据成员 c的值在主函数 main中,先定义派生类的对象 c,然后调用 setc对 c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为: 1,2,3。 33 【正

44、确答案】 C 【试题解析】 本题考核运算符的重载。 C+不能重载的运算符包括: “.”、 “.*”、“:”、 “?:”。 34 【正确答案】 C 【试题解析】 本题考核 C+的文件流。文件流对象中的成员函数 good()用于判定刚进行的操作是否成功,成功时返回 true,否则返回 false。成员函数 fail()用于判定刚进行的操作是否失败,失败时返回 true,否则返回 false。 35 【正确答案】 B 【试题解析】 本题考核常对象、常数据和常函数 。 C+中,在定义常对象时必须进行初始化,而且不能被更新。如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。题中,对象 a被

45、定义成类 sample的常对象,所以通过对象 a只能调用其常成员函数 disp()。所以程序最后输出 disp2。 36 【正确答案】 19 【试题解析】 二叉树具有如下性质:在任意一棵二叉树中,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。根据题意,度为 2的节点为 18个,那么,叶子结点就应当是 19个。 37 【正确答案】 对象 【试题解析】 类描述的是具 有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念 “书 ”这一类对众。一个具体对象称为类的实例。 38 【正确答案】 软件开发 【试题解析】 软件生命周期包括 8个

46、阶段:问题定义、可行性研究、需求分析、系统设计、详细设计、编码、测试、运行维护。为了使各时期的任务更明确,又可以分为 3个时期;软件定义期,包括问题定义、可行性研究和需求分析 3个阶段;软件开发期,包括系统设计、详细设计、编码和测试 4个阶段;软件维护期,即运行维护阶段。可知,编码和测试属于软 件开发阶段。 39 【正确答案】 32 【试题解析】 二叉树的一个性质是,在二叉树的第 k层上,最多有 2k-1(k 1)个结点。由此, 26-1等于 32。所以答案为 32。 40 【正确答案】 数据库管理系统 【试题解析】 数据库系统中实现各种数据管理功能的核心软件称为数据库管理系统,它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。 41 【正确答案】 10 10 20 【试题解析】 本题考核函数的引用传递。 “引用 ”实际上是给一个已知变 量起个别名,对引用的操作也就是对被它引用的变量的操作。函数 funA的功能是将第二个实参的值乘以 2再赋值给第一个实参 (通过引用传递实现 ),函数 funB的功能是将全局变量 x加上 4再赋值给第二个实参,同时 x等于第一

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

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

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