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

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

1、国家二级( C+)笔试模拟试卷 121及答案与解析 1 下列叙述中正确的是 ( A)一个算法的时间复杂度大,则其空间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度也必定大 ( C)一个算法的空间复杂度大,则其时间复杂度必定小 ( D)上述三种说法都不对 2 下列叙述中错误的是 ( A)二又链表是二又树的存储结构 ( B)循环链表是循环队列的一种存储结构 ( C)循环队列属于线性表 ( D)带链的队列是队列的一种存储结构 3 下列叙述中错误的是 ( A)继承是面向对象方法的一个主要特 征 ( B)对象是面向对象软件的基本模块 ( C)类是对象的一个实例 ( D)消息是请求对象执行

2、某一处理或卧答某一要求的信息 4 下列叙述中正确的是 ( A)软件工程主要研究如何编程 ( B)数据库设计的主要任务是设计数据库管理系统 ( C)算法的效率与数据的存储结构无关 ( D)上述三种说法都不对 5 下列叙述中正确的是 ( A)黑箱 (盒 )测试方法完全不考虑程序的内部结构和内部特征 ( B)黑箱 (盒 )测试方法主要考虑程序的内部结构和内部特征 ( C)白箱 (盒 )测试完全不考虑程序内部的逻辑结构 ( D)上述三种说法都不对 6 将 5个数据进行快速排序,在最坏情况下需要比较的次数是 ( A) 4 ( B) 5 ( C) 10 ( D) 20 7 设有如图所示的二叉树 则对该二叉

3、树后序遍历的结果是 ( A) FCADBEG ( B) ACBDFGE ( C) ABDCGEF ( D) ACBDFEG 8 关系表中的每一横行称为一个 ( A)关系 ( B)元组 ( C)属性 ( D)字段 9 在下列关系运算中,能不改变关系中属性个数且减少元组个数的是 ( A)并 ( B)差 ( C)投影 ( D)交 10 下列叙述中正确的是 ( A)实体集之间一对一的联系实际上就是一一对应的关系 ( B)关系模型只能处理实体集之间一对一的联系 ( C)关系模型属于格式化模型 ( D)以上三种说法都不对 11 关于常成员函数,下列说法中错误的是 ( A)常成员函数无法更新对象的数据成员,

4、但可以访问其他类的公用数据成员或全局变量 ( B)常成员函数无法更新对象的数据成员,但是可以更新该对象的常数据成员 ( C)常成员函数既可以被常对象调用,也可以被一般对象调用 ( D)常成员函数不仅要在声明中用到 const修饰符,在定义时也 必须使用 const修饰苻 12 解决类继承中产生的二义性的方法不包括 ( A)使用作用城运算符限定访问的成员函数 ( B)在派生类中定义同名函数,且参数表必须和基类的保持一致 ( C)在派生类中定义同名函数,且参数表可以和基类的不同 ( D)采用虚基类解决多重继承中的共同基类产生的二义性 13 一个类的友元函数能够访问该类的 ( A)私有成员 ( B)

5、保护成员 ( C)公用成员 ( D)所有成员 14 执行下列语句后,输出结果为 steven的是 Char * str=“steven“; cout. write(str, ); ( A) strlen(str) ( B) sizeof(str) ( C) strlen(str+1) ( D) sizeof(str-1) 15 对于拷贝构造函数和赋值操作的关系,正确的是 ( A)拷贝构造函数和赋值操作是完全一样的操作 ( B)进行赋值操作时,会调用类的构造函数 ( C)当调用拷贝构造函数时,类的对象正在被建立并被初始化 ( D)拷贝构造函数和赋值操作不能在同一个类中被同时定义 16 下面描述中

6、体现了抽象类特性的语句是 ( A)可以说明 虚函数 ( B)可以进行构造函数重栽 ( C)可以定义友元函数 ( D)不能说明其对象 17 下面说法正确的是 ( A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 ( B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 ( C)类的内联函数必须在类体内定义 ( D)类的内联函数必须在类体外通过加关键字 inline定义 18 已知一个运行正常的的程序中有下面两个语句: int *p1, *p2P1=b由此可知,变量 a和 b的类型分别是 ( A) int和 int ( B) int*和 int ( C) int和 in

7、t* ( D) int*和 int 19 若有以下定义和语句 int a 4, b=3, *p, *q, *w; p= q w=q; q NULL; 则以下选项中错误的语句是 ( A) *q=0 ( B) w=p ( C) *p=a; ( D) *p=*w; 20 下列关于虚函数与函数重载区别的叙述中不正确的是 ( A)函数说明形式上不同 ( B)函数重载允许是非成员函数,虚函数只能是成员函数 ( C)函数重载的调用依据参数和类型 的差别,虚函数则依据对象 ( D)函数重载的本体可以在类外定义,虚函数不可以 21 请阅读以下程序 main( ) int x=1.y=0, a=0, b=0: s

8、witch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; cout “a=“ a “b=“ bend1; 上面程序的输出结果是 ( A) a=2, b=1 ( B) a=1, b=1 ( C) a=1. b=0 ( D) a=2. b=2 22 以下程序的输出结果是 main( ) int i=0,a=0: while(i 20) for:) if(i%10)=0)break; else i-; i+=11;a+=i; cout a end1; ( A) 21 ( B) 32

9、( C) 33 ( D) 11 23 以下程序的功能是按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出: main( ) int n, k, float score, sum, ave; sum=0.0; for(n=1; n =10; n+) for(k=1;k =4;k+) cin score; sum+=score; ave= sum/4.0 cout “No“ n “:“ aveend1; 上述程序运行后结果不正确,调试中发现有 一条语句出现在程序中的位置不正确。这条语句是 ( A) sum=0.0 ( B) sum+=score ( C) ave=sun/4.0

10、( D) cout “No“ n “:“ ave end1; 24 执行下列程序时输入 123空格 456空格 789回车 ,输出结果是 main() char s100; int c. i; scanf(“%c“, scanf(“%d“, scan(“%s“, s); printf(“%c, %d, %sn“, c,i,s); ( A) 123,456,789 ( B) 1,456.789 ( C) 1,23,456,789 ( D) 1,23,456 25 有如下程序 main( ) int n5=0,0,0,i, k=2; for(i=0 i k i+)ni=ni+1; cout nk

11、end1; 该程序的输出结果是 ( A)不定值 ( B) 2 ( C) 1 ( D) 0 26 下列关于虚基类的描述中错误的是 ( A)虚基类子对象的初始化由最派生类完成 ( B)虚基类子对象的初始化次数与虚基类下面的派生类个数有关 ( C)设置虚基类的目的是消除二义性 ( D)带有虚基类的多层派生类构造函数的成员初始化列表中都要列出对虚基类构造函数调用 27 在某类的公共部分有声明 string operator+();和 string operator+(int);则说明 ( A) string operator+();是前置自增运算符声明 ( B) string operator+();

12、是后置自增运算符声明 ( C) string operator+(int); 是前置自增运算符声明 ( D)两条语句无区别 28 以下有关类与结构体关系的叙述不正确的是 ( A)结构体中只包含数据;类中封装了数据和操作 ( B)结构体的成员对外界通常是开放的;类的成员可以被隐蔽 ( C)用 struct不能声明一个类型名;而 class可以声明一个类名 ( D)结构体成员默认为 public;类成员默认为 private 29 设有 char str80以下不能将输入数据 firstnsecondn CR读取到数组 sir中的语句是 ( A) cin.get(str, strlen(str);

13、 ( B) cin.getline(str, strlen(str); ( C) cin str; ( D) cin.read(str, strlen(str); 30 下列能对对象进行初始化的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)静态成员函数 31 控制格式输入 /输出的操作子中,设置域宽的的函 数足 ( A) ws ( B) oct ( C) setfilll(int) ( D) setw(int) 32 下列不能作为类的成员的是 ( A)自身类对象的指针 ( B)自身类对象 ( C)自身类对象的引用 ( D)另一个类的对象 33 设置虚基类的目的是 ( A)简

14、化程序 ( B)消除二义性 ( C)提高程序运行效率 ( D)减少目杯代码 34 下列描述中正确的是 ( A)类中可以定义与类名相同的数据成员 ( B)直接于类中可以定义与父类名相同的数据成员 ( C)孙子类中可以定义与爷爷类名相同的数 据成员。 ( D)类的所有子孙中都不可以定义与该类同名的数据成员。 35 要通过函数实现一种不太复杂的功能,并且要求加快执行速度,则应该选用 ( A)重载函数 ( B)内联函数 ( C)静态函数 ( D)虚函数 36 在深度为 4的满二叉树中,叶子结点的个数为【 】。 37 在一个容量为 25的循环队列中,若头指针 front 9,尾指针 rear 16,则该

15、循环队列中共有【 】个元素。 38 在面向对象方法中,允许作用于某个对象上的操作称为【 】。 39 软件生命周期包括八个阶段。为使各时期的 任务更明确,又可以分为以下三个时期:软件定义期,软件开发期,软件维护期。编码和测试属于【 】期。 40 在数据库系统中,数据具有独立性。由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。这种独立性称为【 】。 41 为了表明一个函数不带返回值,应在定义函数时指定该函数类型为【 】。 42 下列程序如果去掉 for循环外围的大括号对,则会出现编译错误。错误原因是【 】。 #

16、include iostream, h int a=5; void main() int a=10, b=20; cout a “, “ b end1; int a=0, b=0; for (int i=1; i 8; i+) a+=i; b+=a; cout a “, “ b “, “ : a end1; cout a “, “ b end1; 43 对于下列语句 char* strl = “Hello“; char * str2 =. “Hello“; *strl = P; cout str2 end1; 其输出结果为:【 】 44 下列程序不能通过编译,应该在划线部分填写的语句是【 】。

17、 #include iostream. h #include stdlib. h double Fune(int a, int b, char ch) double x; switch(ch) case +: x=double(a) +b; break; case -: x= double(a) -b; break; case /: x=double(a) * b; break; case /: if(B) x=double(a) /b; else exit(1) break default: exit(1); _ void main() cout Func(32 , 6 ,-) “,“; c

18、out Func(32, 6 ,*) “,“; cout Func(32, 6 ,/) end1; 45 根据下面的主程序,完成类的一种构造函数的最简单形式。 #include iostream. h class base private: int num; public: 【 】 ; ; void main() base try(6); 46 下列程序的执行结果为【 】。 #inciude iostream, h int f(int i) return + +i; int g(int void main() int a, b; a=b=0; a+ =f(g(A) ); b+=f(f(B) )

19、; cout %= “ a “, b=“ (b end1; 47 下列程序的运行结果是【 】。 # include iostream. h class A public: virtual void use()cout “in An“; ; class B:public A public: virtual void use()cout “in Bn“; ; class C: public B public: virtual void use() cout “in Cn“; ; void main() A *obj; obi=new C; obj- use() delete obj; 48 完成下

20、列类的构造函数,初始化语句为【 】。 #include iostream. h class Test private: int x, y; public, void Test(int initx, int inity) _ void printx() cout x “ “ y “=“ x-y; ; void main() Test x(300, 200); x. printx(); 49 根据下列程序的执行结果,可以断定划线部分的修饰符应为【 】。 执行结果: i9a football is created. a football is created. i=10 a football is

21、destroyed. a football is created. i=20 a football is destroyed. a football is destroyed. 源程序: # inelude iostream. h class Football public: Football() cout “a football is created. “ end1; Football() cout “a football is destroyed. “ end1; ; void func(int i) _ Football f1; Football f2; cout “i= “ i end

22、1; void main() func(10); func(20); 50 下列程序的输出结果是【 】。 # include iostream. h class MyClass public: int number; void set(int i); ; int number=3; void MyClass: :set (int i) number=i; void main( ) MyClass my1; int number=10; my1.set(5), cout my1, number ,; my1.set(number); cout my1.number ,; my1.set(: :n

23、umber); cout my1.number .; 国家二级( C+)笔试模拟试卷 121答案与解析 1 【正确答案】 D 【试题解析】 算法的复杂度主要包括时间复杂度和空间复杂度。但不存在算法的时间复杂度大,则其空间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度必定小等问题。 2 【正确答案 】 B 【试题解析】 二叉链表是二叉树的一种存储结构;循环队列是队列的一种存储结构,而队列属于线性表,因此,循环队列也是线性表;带链的队列是队列的一种存储结构因此,选项 A), C)、 D)都是正确的。循环链表是一般线性表的一种链式存储结构,它不

24、是循环队列的存储结构。因此,选项 B)中的说法是错误的。 3 【正确答案】 C 【试题解析】 继承是面向对象方法的一个主要特征;对象是面向对象软件的基本模块,消息是请求对象执行某一处理或回答某一要求的信息。因此,选项 A)、B), D)都是正确的,在面向对象方 法中,对象是类的一个实例。因此,选项 C)中的说法是错误的。 4 【正确答案】 D 【试题解析】 所谓软件工程是指,采用工程的概念,原理、技术和方法指导软件的开发与维护。软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。 数据库设计是指在已有数据库管理系统的基础上建立数据库的过程。 数据结构与算法之间有着密切的关

25、系,特别是对于数据处理问题,算法的效率通常与数据结构在计算机中的表示有着直接的关系。 综上所述,选项 A), B)、 C)中的说法都是错误的。 5 【 正确答案】 A 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例。因此,选项 A)中的说法是正确的,其他三项说法都是错误的。 6 【正确答案】 C 【试题解析】 对长度为 n 的线性表进行快速排序,在最坏情况下需要 n(n-1)/2次比较,现线性表的长度为 5,在最坏情况下需要比较的次数为 5(5-1)/2=10。 7 【正确答案】 C 【试题解析

26、】 按照二叉树后序遍历的方法;在访问根结点、遍历左 子树与遍历右子树这三者中,首先遍历左于树,然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先先遍历左子树,然后遍历右子树,最后访问根结点。对本题中的二叉树进行后序遍历的结果应是 ABDCGEF。设有如图所示的二叉树 8 【正确答案】 B 【试题解析】 关系表中的每一横行称为一个元组。 9 【正确答案】 D 【试题解析】 交运算是不改变关系中属性个数的,且减少元组的个数。 10 【正确答案】 D 【试题解析】 实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集 “学生 ”与实体集 “座位 ”之间是一对一的联系

27、。因为实体集 “学生 ”中的每一个学生最多与实体集 “座位 ”中的一个座位有联系 (学生坐在该座位上 );并且,实体集 “座位 ”中中的每一个座位也最多与实体集 “学生 ”中的一个学生有联系(座位上坐着该学生 )。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项 A)中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。因此,选项 B)中的说法也是错误的。关系模型是与格式化模 型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系

28、,它是建立在数学理论基础上的。因此,选项 C)中的说法也是错误的。 11 【正确答案】 B 【试题解析】 本题考察 const修饰符的使用规则,只要考生理解了 const表示“常 ”的意思就容易举一反三。根据被修饰内容的不同, const在修饰数据成员,成员函数和对象时,具有特定的含义很明显,常数据成员是不能被修改的,这一点在选项 B中被破坏,因此可以确定本题答案为 B,如果考生对其他选项难于区分,同样可以得到正确答案。 12 【正确答案】 C 【试题解析】 继承中的二义性主要表现在多重继承中具有多条继承路径时,派生类中行为的不确定性。如果强制指定了按照某条路径访问,亦即采用域作用符限定访问的

29、成员函数的方法可以解决之,故选项 A排除。在选项 B和 C中,唯一的区别在于参数表是否一致,我们知道:参数表不一致同名函数属于重载,是不存在二义性问题的,故选项 C是正确答案。关于选项 D,虚基类是 C+中解决二义性的一种有效手段。 13 【正确答案】 D 【试题解析】 在一个类的内部声明,并用 friend 修饰的函数称为该类的友员函数,友员函数可以像成员函数一样,访问类的所有级别的成员。友员机制主要用于提高访问效率但是破坏了类的封装性原则。在程序中适当使用友员函数,并寻求封装和效率之间的一个平衡点,是使用友员技术的一个主要内容。 14 【正确答案】 A 【试题解析】 本题考察在 C+中,字

30、符串的存放方式,以及不同的字符串函数的作用其中, strlen 是专门用于求字符串长度的,其自动去掉字符数组后面的那个 /0,而 sizeof 后面求的则是 str指针,指针在目前的 32位机器中是固定大小的 ,其值与字符中的长度是没有关系的。故可以排除 B 和 D。而选项 C则将 /0多考虑了一次。 15 【正确答案】 C 【试题解析】 在赋值操作中,将发生对象的拷贝操作,但并不说明两者是完全一样的一般情况下,如果绐类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用

31、中,这么简单的对应关系是不适用的,这就需要程序员重新定义拷贝构造函数。 16 【正确答案】 D 【试题解析 】 抽象类指的是类中至少有一个纯虚函数,纯虚函数是虚函数后有“=0”修饰,表示该函数在本级类中没有实现,类仅用于振生。抽象类存在的唯一目的就是构造类层次,派生出其他类。抽象类与其他类韵最大区别就在于抽象类不能实例化。 17 【正确答案】 B 【试题解析】 内联函数用 inline修饰,用于取代 C语言中的宏定义。 Inline是个建议机制而不是强制机制,也就是说,程序员可以指定任意函数为 inline函数,但是编译器会根据系统情况来决定是否将其 inline处理。对于较大的函数,编译器往

32、往会取消其 inline特性。 Inline:函数的特点之一就是执行速度快,他实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用 inline修饰,编译器也认为是一种内联建议。 18 【正确答案】 C 【试题解析】 本题乍一看让人迷惑,如果找到切入点就可以简单快速的解答本题;观察四个选项可知,变量 a和 b的四种组合分别是四个选项。很明显指针在做值使用时需要加星号修饰,即如 *p1 =整数变量 的形式。故 b不可能是 int型,故可排除 A和 B。另外需要注

33、意的是变量的初始化和赋值是不同的 P2 在声明时就指向变量 a,其值为 a的地址;因此,变量 a应为 int型,故正确答案为 C。 19 【正确答案】 D 【试题解析】 指针是一个既强大又危险的技术, C/C+语言之所以灵括高效,原因之一就是采用了指针技术,所以 c/C+特别适合开发系统软件和工具软件在C#语言中已经取消了指针,而且全部属于托管代码。而在 dotnet框架中,为了保持兼容性,仍然可以使用 C+,但分托管和非托管代码。本题实际上有个圈套,只 要注意到题干中 “语句 ”,而且注意到各个选项中都有分号结尾,就可以判断选项 D是正确的:语句不是以逗号结尾的。 20 【正确答案】 D 【

34、试题解析】 虚函数和函数重载的区别比较大,只要清楚各个概念的基本知识就足以判断出本题的正确答案为, D。 21 【正确答案】 A 【试题解析】 本题考察 switch 语句的嵌套,以及 break 语句的使用规则,即break 中断当前的执行流,不再执行下面的 case语句,如果没有 break 语句,则会顺序执行随后语句。据此,读程序可知,内层 switch 执行 case 0分支,故 a增 l,调出内层 switch 后,由于没有 break 语句,随后执行外层 switch 的 case 2分支, a又增 1, b 增 1。故答案为 A。 22 【正确答案】 B 【试题解析】 本题是两个

35、循环语句和一个判断语句的嵌套。对于这类试题,只要考生基础知识扎实,细心判断,一般是没有多大难度的。 For循环的作用是在 i等于 10的时候跳出循环,本题的答案为 B。 23 【正确答案】 A 【试题解析】 本题编译没有错误,但是执行结果确实错误的。细心的考生可以发现,第一个考生的乘积输入完之后, sun的值并 没有被清空,接着累加第二个考生的分数,随后进行四门平均是错误的,所以需要内层循环和平均值计算完毕后进行 sum的清空。 24 【正确答案】 D 【试题解析】 本题实质是考察 C语言中的格式化输入和输出。在 C+中,输入和输出控制的简易性有了很大提高,无需用户小心输入,而是由编译系统判断

36、其辅人和输出格式。自行进行相应的处理。 25 【正确答案】 D 【试题解析】 本题较为简单,实际上其中的 for循环只是起到混淆视听的效果,对结果并没有任何影响。 26 【正确答案】 B 【试题解析】 虚基类主要是为了消除在多重继承中的二义性问题。实际上,说某个类是虚基类,并不是该类本身有什么特殊的地方,而是在继承的时候加上virtual 修饰词。虚基类不同于抽象类,虚基类是可以被实例化的,派生类初始化时,必须列出虚基类的构造函数调用。虚基类对象的初始化次数只于对象的多少有关,与类的层次结构是没有关系的。故本题正确答案为 B。 27 【正确答案】 A 【试题解析】 在重载单操作符的过程中,对于

37、像 +和 -这样的操作符,不易区分属于前置还是后置,因此 C+规定了用一个虚的形参来区分前置和后置。 28 【正确答案】 C 【试题解析】 类和结构体有着密切的血缘关系。类可以看做是将动作和数据都封装的结构体,当然结构体本身是没有动作的。另外,结构体中的成员对外界访问是没有限制的,而类的成员却是有不同的访问级别限制。 29 【正确答案】 B 【试题解析】 本题考察 C+中输入输出流对象的一些常用成员函数的用法。其中get和 getline的区别在于 getline读取中以 “n”作为辅入结束符。故本题中 getline只能接收第一个换行符之前的字符,即 first,后面的字符被丢弃。因此正确答

38、案应为 B。 30 【正确答案】 A 【试题解析】 对象的初始化工作由构造函数来完成,析构函数则完成对象销毁前的资源回收等工作。静态成员函数为同一类中所有对象所共享。 31 【正确答案】 D 【试题解析】 本题需要考生记忆一些输入输出控制操作子, oct为八进制, setfill为设置填充符, setw 为设置域宽操作子。 32 【正确答案】 B 【试题解析】 引用是 C+中引入的新概念,可以理解为:看着像变量,实际同指针,故选项 A和 C相同,可以排除。在 OO开发中,类之间的关系报重要,具体到程序 中,类之间的关系就体现为类对象之间的 has a或 is a关系上,一个类对象作为另外一个类

39、的成员是很常见的现象。自身类对象做类的成员将引起无限递归。故本题正确答案为 B。 33 【正确答案】 B 【试题解析】 虚基类的目标就是要消除二义性。尽管: C+或其他 OO语言支持多重继承,但在实际软件开发中多重继承用的并不多,原因在于多重继承过手复杂。因此,在 C#中已经不再支持多重继承了。 34 【正确答案】 C 【试题解析】 本题所有选项中均提到了同名数据成员的现象。是否允许同名数据成员存在,关键要 看这种同名现象编译器是否能够判断出采,如果可以判断,则是允许的,否则则是禁止的。 35 【正确答案】 B 【试题解析】 内联 inline函数就是取代宏定义的,在编译时展开,插入到相应的位

40、置,从而减少了系统开销,加快了执行速度。虚函数则是为了取消二义性现象,静态函数则是一个类所有对象的共享函数。 36 【正确答案】 8 【试题解析】 二叉树有一个性质,即在二叉树的第 k 层上,最多有 2k-1(k1)个结点。而对于满二叉树来说,每一层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点。 因此,在深度为 4的满二叉树中,所有叶子结点在第 4层上,即其结点数为 2k-1 2k-1 8 37 【正确答案】 7 【试题解析】 设循环队列的容量为 m。 如果 rear front,则循环队列中的元素个数为 rearfront; 如果 rear front,则循环队列中的元

41、素个数为 m+(rearfront)。 在本题中, front 9, rear 16,即 rear front,因此,循环队列中的元素个数为 rearfont 16-9 7。 38 【正确答案】 方法 【试题解析】 在面向对象方法中,所谓方法是指允许作用于某个对象上的各种操作。因此,允许作用于某个对象上的操作称为方法。 39 【正确答案】 软件开发 【试题解析】 通常,软件生命周期包括八个阶段,问题定义、可行性研究,需求分析、系统设计、详细设计、编码、测试、运行维护。为使各时期的任务更明确,又可以分为以下三个时期: 软件定义期:包括问题定义、可行性研究和需求分析三个阶段; 软件开发期:包括系统

42、设计、详细设计,编码和测试四个阶段; 软件维护期 ;即运行维护阶段。 40 【正确答案】 物理独立性 【试题解析】 通过系统提供的映象功能,在数据库系统中,使数据具有两方面的独立性;一是物理独立性二是逻辑独立性。其中,物理独立性是指:由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。 41 【正确答案】 void 【试题解析】 void 表明该函数不带返回值,如果没有 void,则系统会返回一个默认类型的随机值,这对程序可能造成不必要的问题。 42 【 正确答案】 a重定义 【试题解析】 在本题中 for循环外

43、围的大括号对没有实质含义,仅用于函数的作用城范围。如果去掉该括号,编译错误就会发生,因为变量 a出现了重定义错误。 43 【正确答案】 Pello 【试题解析】 注意,两个字符串都没有名字,属字符串常量,在内容中是同一份内容。因此,对 strl进行重新赋值,仅仅替换了该字符数组的第一个字符。两个指针指向同一个字符串,因此输出为 Pello。 44 【正确答案】 return x; 【试题解析】 本题函数声明时指定了函数的返回值为 double,因此在函数体中必须存在一个 return 语句。 45 【正确答案】 base(int n) 【试题解析】 注意,根据 main 函数中对类 base的

44、使用情况可知, base类必须提供整型单参构造函数,同时要求构造其最简单的形式,故函数体为空。 46 【正确答案】 a=3, b 2 【试题解析】 本题考查函数间引用传递的知识点。 g(a)执行之后,返回值为 1, a也变为 1,这就是引用传递的特点。然后执行 f(1),返回值为 2,此时 a 2+1,故a此时为 3。由于 f(b)不具有引用传递的特征, 因此,执行后 b=0+2,结果为 2。 47 【正确答案】 in C 【试题解析】 本题考查虚函数和多态性。原本 obj指向祖先类,随后被赋值,指向新的子孙类,则在使用 use这个重载的虚函数时,根据当前指向可确定调用子孙的同名虚函数。 48

45、 【正确答案】 x=initx; y=inity; 【试题解析】 本题考查的是类的私有数据如何从接口成员函数那里数据的。本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。 49 【正确答案】 static 【试题解析】 观察一下输出 中对象的构造函数和析构函数的执行次数可以看出,再次进入时某对行没有被构造,亦即该对象在 func执行后没有被销毁,再次进入时则不需要重构,可以体现这种功能的标识符只有 static。 50 【正确答案】 5, 10, 3 【试题解析】 本题考查全局变量,局部变量和类的数据成员之间的使用上的差别。使用全局变量时需要用域作用符来限定该变量,否则编译器无法正确区分。

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

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

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