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

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

1、2007 年 9月国家二级( C+)笔试真题试卷及答案与解析 1 软件是指 ( A)程序 ( B)程序和文档 ( C)算法加数据结构 ( D)程序、数据与相关文档的完整集合 2 软件调试的目的是 ( A)发现错误 ( B)改正错误 ( C)改善软件的性能 ( D)验证软件的正确性 3 在面向对象方法中,实现信息隐蔽是依靠 ( A)对象的继承 ( B)对象的多态 ( C)对象的封装 ( D)对象的分类 4 下列叙述中,不符合良好程序设计风格要求的是 ( A)程序的效率第一,清晰第二 ( B)程序的 可读性好 ( C)程序中要有必要的注释 ( D)输入数据前要有提示信息 5 下列叙述中正确的是 (

2、 A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上三种说法都不对 6 下列叙述中正确的是 ( A)数据的逻辑结构与存储结构必定是一一对应的 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 7 冒泡排序在最坏情况下的比较次数是 ( A) n(n+1)/2 ( B) nlog2n ( C) n(n-1)/2 ( D) n/2 8 一棵二叉树中共有 70个叶子结

3、点与 80个度为 1的结点,则该二叉树中的总结点数为 ( A) 219 ( B) 221 ( C) 229 ( D) 231 9 下列叙述中正确的是 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库技术的根本目标是要解决数据的共享问题 ( C)数据库管理系统就是数据库系统 ( D)以上三种说法都不对 10 下列叙述中正确的是 ( A)为了建立一个关系,首先要构造数据的逻辑关系 ( B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项 ( C)一个关系的属性名表称为关系模式 ( D)一个关系可以包括多个二维表 11 在函数中,可以用 auto、 extern、 r

4、egister和 static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 ( A) auto ( B) extern ( C) register ( D) static 12 对于一个类定义,下列叙述中错误 的是 ( A)如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。 ( B)如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数。 ( C)如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数。 ( D)如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。 13 如果派生类以 protected方式继承基类

5、,则原基类的 protected成员和 public成员在派生类中的访问属性分别是 ( A) public和 public ( B) public和 protected ( C) protected和 public ( D) protected和 protected 14 下列运算符函数中肯定不属于类 FunNumber的成员函数的是 ( A) int operator-(FunNumber); ( B) FunNumber operator-(); ( C) FunNumber operator-(int); ( D) int operator-(FunNumber,FunNumber);

6、15 C+中的模板包括 ( A)对象模板和函数模板 ( B)对象模板和类模板 ( C)函 数模板和类模板 ( D)变量模板和对象模板 16 如果利用 C+流进行输入输出,下面的叙述中正确的是 ( A)只能借助于流对象进行输入输出。 ( B)只能进行格式化输入输出。 ( C)只能借助于 cin和 cout进行输入输出。 ( D)只能使用运算符和进行输入输出。 17 下列符号中不属于 C+关键字的是 ( A) friend ( B) namespace ( C) continue ( D) byte 18 下列各组类型声明符中,含义相同的一组是 ( A) unsigned long int和 lo

7、ng ( B) signed short int和 short ( C) unsigned short和 short ( D) short int和 int 19 必须用一对大括号括起来的程序段是 ( A) switch语句中的 case标号语句。 ( B) if语句的分支。 ( C)循环语句的循环体。 ( D)函数的函数体。 20 语句 int*p= class MyClass public: MyClass() +count; MyClass() -count; static int getCount() return count; private: static int count; ;

8、 int MyClass:count=0; int main() MyClass obj; cout obj.getCount(); MyClass *ptr=new MyClass; cout MyClass:getCount(); delete ptr; cout MyClass:getCount(); return 0; 程序的输出结果是 ( A) 121 ( B) 232 ( C) 221 ( D) 122 28 有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x):val(

9、x) void Print() const cout “const:val=“ val t; void Print() cout “val=“ val t; private: int val; ; int main() const MyClass obj1 (10); MyClass obj2(20); obj1.Print(); obj2,Print(); return 0; 程序的输出结果是 ( A) val=10 const:val=20 ( B) const:val=10 const:val=20 ( C) const:val=10 val=20 ( D) val=10 val=20

10、29 有如下程序: #include iostream using namespace std; class Part public: Part(int x=0):val(x) coutval; Part() cout val; private: int val; ; class Whole public: Whole(int x, int y, int z=0):p2(x),p1 (y),val(z) coutval; whole() cout val; private: Part p1,p2; int val; ; int main() Whole obj (1,2,3); return

11、0; 程序的输出结果是 ( A) 123321 ( B) 213312 ( C) 213 ( D) 123123 30 有如下程序: #include iostream using namespace std; class Base public: Base(int x=0) coutx; class Derived: public Base public: Derived(int x=0) cout x; private: Base val; ; int main() Derived d(1); return 0; 程序的输出结果是 ( A) 0 ( B) 1 ( C) 1 ( D) 1 3

12、1 若有如下 类定义: class B void fun1() protected: double var1; public: void fun2() , class D: public B protected: void fun3() ;已知 obj是类 D的对象,下列语句中不违反类成员访问控制权限的是 ( A) obj.fun1(); ( B) obj.varl; ( C) obj.fun2(); ( D) obj.fun3(); 32 有如下程序: #include iostream using namespace std; class Base public: void output(

13、) cout 1; virtual void Print() cout B; ; class Derived: public Base public: void output() cout 2; void Print() cout D; ; int main() Base *ptr=new Derived; ptr- output(); ptr- Print(); delete ptr; return (); 程序的输出结果是 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 33 下列是重载乘法运算符的函数原型声明,其中错误的是 ( A) MyClass operator *

14、(double, double); ( B) MyClass operator * (double, MyClass); ( C) MyClass operator * (MyClass, double); ( D) MyClass operator * (MyClass, MyClass); 34 如下函数的作用是以双倍行距输出文件: void double_space(ifstream while (_) _; if (c = n)t.put(c); 画线处缺失的部分是 ( A) f.get(c)与 t.put(c) ( B) f.put(c)与 t.get(c) ( C) t.get(c

15、)与 f.put(c) ( D) t.put(c)与 f.get(c) 35 有如下程序: #include iostream using namespace std; class B public: virtual void show() cout“B“; ; class D: public B public: void show() cout “D“; ; void fun1(B *ptr) ptr- show(); void fun2(B void fun3(B b) b.show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fu

16、n3(d); return 0; 程序的输出结果是 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 36 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【 】。 37 在两种基本测试方法中,【 】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。 38 线性表的存储结构主要分为顺序 存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【 】存储结构。 39 对下列二叉树进行中序遍历的结果为【 】。40 在 E-R图中,矩形表示【 】。 41 若有定义语句: int a=3, b=2, c=1;,则表达式

17、a b?a:b的值是【 】。 42 执行下列语句后,变量 sum的值是【 】。 int sum=0; for(int i=1; i =3; i+) for(int j=1; j =i; j+) sum+; 43 已知有函数 f的定义如下: int f() static int s=0; s+=2; return s; 则在某程序中第 2次执行函数调用语句 f();时,函数 f的返回值是【 】。 44 已知如下程序的输出结果是 23,请将画线处缺失的部分补充完整。 #include iostream using namespace std; class MyClass public: void

18、Print() const cout 23; ; int main() MyClass* p = new MyClass(); 【 】 .Print(); return 0; 45 有如下程序: #include iostream using namespace std; class A public: A() cout “A“; A() cout “A“; ; class B A a; public: B() cout “B“; B() cout “B“; ; int main() B b; return 0; 程序的输出结果是【 】。 46 请在如下程序中的空格处填写正确的语句: #inc

19、lude iostream using namespace std; class Base public: void fun() cout “Base fun“ endl; ; class Derived: public Base public: void fun() 【 】 ; /调用基类的函数 fun() cout “Derived fun “ endl; ; 47 已知类 sample是一个抽象类,其成员函数 display是无形参、无返回类型的纯虚函数,请完成其声明: class sample public: sample() ; 【 】 ; 48 有如下复数类的声明,请补充完整。 c

20、lass complex double real; /实部 double imag; /虚部 public: complex(double x,double y) real=x; imag=y; complex operator +(complex c) /重载加法运算符 “+“ return complex(【 】 ); ; 49 请将如下程序补充完整,使得输出结果为: bbaa #include iostream using namespace std; class A public: 【 】 cout “aa“; ; class B: public A public: B() cout

21、“bb“; ; int main () B *p= new B; delete p; return 0; 50 请将下列栈类 Stack补充完整 class Stack private: int pList100; /int数组,用于存放栈的元素 int top; /栈顶元素 (数组下标 ) public: Stack(): top(0) void Push(const int &item); /新元素 item压入栈 int Pop(void); /将栈顶元素弹出栈 ; void Stack:Push(const int &item) if(top=99) /如果栈满,程序终止 exit(1

22、); top+; /栈顶指针增 1 【 】; int Stack:Pop() if(top 0) /如果栈空,程序终止 exit(1); return pListtop-; 2007 年 9月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 D 【试题解析】 本题考查软件的定义。软件 是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档的总和。因此,本题正确答案是选项D。 2 【正确答案】 B 【试题解析】 本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题:测

23、试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软件中的错误。本题的正确答案是选项 B。 3 【正确答案】 C 【试题解析】 通常认为;面向对 象方法具有封装性、继承性、多态性几大特点,就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中 (对象中 )。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性 (数据 )和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当

24、某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一 致性。 多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,在面向对象方法中,实现信息隐蔽是依靠对象的封装。正确答案是选项 C。 4 【正确答案】 A 【试题解析】 本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不

25、能只为了追求效率而 使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。 人们在软件生存期要经常阅读程序,特别是在软件测试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。 正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。 I/O 信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入 /输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类 和取值范围。 经过上述分析可知,选项 A是不符合良好程序设计风

26、格要求的。 5 【正确答案】 A 【试题解析】 本题考查程序效率。程序效率是指程序运行速度和程序占用的存储空间。影响程序效率的因素是多方面的,包括程序的设计、使用的算法、数据的存储结构等。在确定数据逻辑结构的基础上,选择一种合适的存储结构,可以使得数据操作所花费的时间少,占用的存储空间少,即提高程序的效率。因此,本题选项 A的说法是正确的。 6 【正确答案】 D 【试题解析】 本题考查数据结构的基本知识。 数据之间的相互关系称为逻 辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计

27、算机中有两种,即顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中;链式存储结构是使用指针把相互直接关联的节点链接起来。因此,这两种存储结构都是线性的。可见,逻辑结构和存储结构不是一一对应的。因此,选项 A和选项 B的说法都是错误的。 无论数据的逻辑结构是线性的还是非线性的,只能选择顺序存储结构或链式存储结构来实现存储 。程序设计语言中,数组是内存中一段连续的地址空间,可看作是顺序存储结构。可以用数组来实现树型逻辑结构的存储,比如二叉树。因此,选项 C的说法是错误的。 7 【正确答案】 C 【试题解析】 冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,

28、则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其它值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有 n个数据的序列,共需 n-1趟排序,第 i趟对从 1到 n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第 1趟比较 n-1次,第 2趟比较 n-2次,依此类推,最后一趟比较 1次,一共进行 n-1趟排序。因此,冒泡排序在最坏情况下的比较次数是 (n-1)+(n-2)+1 ,结果为 n(n-1)/2。本题的正确答案是选项 C。 8 【正确答案】 A 【试题解析】 本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终

29、端结点 (即叶子结点 )数为 n0,而其度数为 2的结点数为 n2,则 n0=n2+1。 根据这条性质可知,若二叉树中有 70个叶子结点,则其度为 2的结点数为 70-1,即 69个。二叉树的总结点数是度为 2、度为 1和叶子结点的总和,因此,题目中的二叉树总结点数为 69+80+70,即 219。因此,本题的正确答案是选项 A。 9 【正确答案】 B 【试题解析】 本题考查数据库系统的基本概念和知识。 数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件

30、的支持。因此,选项A的说法是错误的。 数据库 可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项 B的说法是正确的。 通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。因此,选项 C的说法是错误的。 因此,本题的正确答案是选项 B。 10 【正确答案】 C 【试题解析 】 本题考查数据库的关系模型。关系模型的数据

31、结构是一个 “二维表 ”,每个二维表可称为一个关系,每个关系有一个关系名。表中的一行称为一个元组;表中的列称为属性,每一列有一个属性名。表中的每一个元组是属性值的集合,属性是关系二维表中最小的单位,它不能再被划分。关系模式是指一个关系的属性名表,即二维表的表框架。因此,选项 C的说法是正确的。 11 【正确答案】 A 【试题解析】 本题考查的知识点是:存储类型。 C+中变量的存储类型分为如下几种类型: (1)auto函数内部的局部变量 (auto可省略不写 )。 (2)static静态存储分配,又分为内部和外部静态。 (3)extern全局变量 (用于外部变量说明 )。 (4)register

32、变量存储在硬件寄存器中。 故本题应该选择 A。 12 【正确答案】 B 【试题解析】 本题考查的知识点是:构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。故本题应该选择 B。 13 【正确答案】 D 【试题解析】 本题考查的知识点是:基类成员在派生类中的 访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。此时派生类对基类中各成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性,基类中公有成员和保护成员在派生类中的访问属性将随着继承方式而

33、改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员 。故本题应该选择 D。 14 【正确答案】 D 【试题解析】 本题考查的知识点是:运算符 “-”的重载。 “-”运算符有一元 (取负 )和二元 (减法 )两种形式,且均可重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元数减 1,因为此成员函数所属的对象可成为运算符的一个运算分量。重载为非成员函数时,形参个

34、数一般和运算符元数相等。所以 “-”运算符重载为成员函数时,参数个数可以是 0个和 1个,而重载为非成员函数时,参数个数可以是 1个或 2个。所以题目中的选项 D,肯定是重载为非成员函数。故本题应该 选择 D。 15 【正确答案】 C 【试题解析】 本题考查的知识点是:模板。在 C+语言中,模板只有两类:函数模板和类模板。故本题应该选择 C。 16 【正确答案】 A 【试题解析】 本题考查的知识点是: C+流。 利用 C+流既可以进行有格式输入输出,也可以进行无格式输入输出,故选项B 不正确。 C+流有 4个预定义的流对象,它们的名称及与之联系的 I/0 设备如下: cin 标准输入 cout

35、 标准输出 cerr 标准出错信息输出 clog 带缓冲的标准出错信息输出 故选项 C不正 确。 C+流除了可以使用提取 “ ”插入 “ ”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,例如: get()、 getline()、 putback()等。故选项 D不正确。 综上所述,本题应该选择 A。 17 【正确答案】 D 【试题解析】 本题考查的知识点是: C+关键字。 解答此类问题没有什么捷径,只能凭考生对 C+语言的熟悉或者死背 C+关键字表。不过有一点要注意: C+关键字全部是由小写字母和下划线组成,如果见到有大写字母出现,那就肯定不是关键字。 friend 是声明友 元

36、函数或右元类时用到的关键字; namespace是定义或使用名字空间时用到的关键字: continue是终止本次循环直接开始下一次循环所用到的关键字; byte是字节的意思,它不是 C+关键字,在 C+中表示字节的是 char。 综上所述,本题应该选择 D。 18 【正确答案】 B 【试题解析】 本题考查的知识点是;基本类型的派生类型。 C+语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型的派生类型。派生类型声明符是由基本类型关键字 char、 int、 float、 double前面加上类型修饰符组成的。类型修饰符包括: short短类型,缩短字长: long 长

37、类型,加长字长; signed 有符号类型,取值范围包括正负值: unsigned 无符号类型,取值范围只包括正值。其中 signed 和 unsigned 只能同时出现一个,如果省略则默认为signed。 short和 long也只能同时出现一个,如果修饰的类型是 int,则可以省略int。由此可见,选项 A中, unsigned long int的省略形式为 unsigned long;选项 B中, signed short int的省略形式就是 short,正确;选项 C中,unsigned short int的省略形式是 unsigned short:选项 D中, short int的

38、省略形式是 short。故本题应该选择 B。 19 【正确答案】 D 【试题解析】 本题考查的知识点是;语句块和函数。 if语句的分支和循环语句的循环体可以是一条语句也可以是一个语句块,所以不是必须用一对大括号括起来; switch 语句中的 case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来:函数的函数体必须使用一对大括号括起来。故本题应该选择 D。 20 【正确答案】 A 【试题解析】 本题考查的知识点是:指针的赋值。题目中的语句 int*p=&k;有两个作用:首先,定义了一个 int型指针 p;然后,将变量 k 的地址 &k 赋给刚定义的指针 p。所以等效的

39、语句序列为: int*p; p=&k;,应该选择 A。 21 【正确答案】 C 【试题解析】 本题考查的知识点是:函数重载。在 C+语言中,允许定义一系列函数名相同,但形参的个数或类型不完全相同函数。这种定义就叫做函数的重载。重载函数对返回值类型不作要求,返回值类型也不参与区分函数的重载形式。 故本题应该选择 C。 22 【正确答案】 C 【试题解析】 本题考查的知识点是, this 指针。 this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有 f3()满足 “类的非静态成员函数 ”的要求,故本题应该选择 C。 23 【

40、正确答案】 C 【试题解析】 本题考查的知识点是:派生类对基类成员的访问。派生类对基类中各成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。 24 【正 确答案】 A 【试题解析】 本题考查的知识点是:运算符的重载。运算符重载为成员函数时,形参个数一般为运算符的元数减 1,因为此成员函数所属的对象可成为运算符的一个运算分量。重载为非成员函数时,形参个数一般和运算符元数相等。所以,二元运算符重载为非成员函数时,参数表中应有两个参数,选项 C不正确;运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符,选项 A是正确的。一元运算符中, “-”

41、取负、 “+”增 1、 “-”减 1等运算符均可重载为成员函数,故选项 B 不正确。 C+中,有 “.”、 “.*”、 “- *”、 “:”、 “?:”五个运算符不能重载,故选项 D不正确。本题应该选择 A。 25 【正确答案】 D 【试题解析】 本题考查的知识点是:模板参数。模板参数是一种参数化的数据类型,在模板类或模板函数中,只要是使用数据类型的地方都能够使用模板参数来代表一种还未知的数据类型。所以,模板参数可以作为成员函数的局部变量类型。故本题应该选择 D。 26 【正确答案】 B 【试题解析】 本题考查的知识点是:输入输出的格式控制。 setw()控制的是输入输出的宽度: setfil

42、l()控制的是输出的填充字符。所 以,本题的输出结果是*1234。故应该选择 B。 27 【正确答案】 A 【试题解析】 本题考查的知识点是:静态成员。对于类中的非静态数据成员,每一个类对象都拥有一个拷贝 (副本 ),即每个对象的同名数据成员可以分别存储不同的数值,这是保证每个对象拥有区别于其他对象的特征的需要。而类中的静态成员则是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝 (副本 ),这个副本被所有属于这个类的对象共享。这种共享与全局变量或全局函数相比 ,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了

43、一个 obj对象,其构造函数使 MyClass的静态数据成员 count增 1,所以第一条输出语句输出的结果是1。然后通过指针动态创建了一个 MyClass 类的对象,构造函数再次被调用,count变为 2,所以第 2次输出结果是 2。接下来是用 delete删除了刚才动态创建的 MyClass对象,析构函数被调用, count减 1变为 1,第 3次输出 1。故本题的输出为 121,选项 A正确。 28 【正确答案】 C 【试题解析】 本题考查的知识点是:常成员函数的重 载。使用 const关键字说明的成员函数称为常成员函数。 const关键字可以用于参与对重载函数的区分。重载的原则是:常对

44、象调用常成员函数,一般对象调用一般成员函数。题目中的 Print()就是通过 const重载的两个成员函数,主函数中声明的 obj1是常对象,而 obj2是一般对象。故输出结果为 const:val=10 val=20,应该选择 C。 29 【正确答案】 B 【试题解析】 本题考查的知识点是:类的构造与析构。建立一个类的对象时,构造函数的执行顺序如下: 执行基类的构造函数,调用顺序按照各个 基类被继承时声明的顺序 (自左向右 ); 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序 (自上而下: (如果一行声明了多个对象,则还要遵循自左向右 ) 执行自身的构造函数。 析构顺序与之

45、相反。本题的 Whole类没有基类,但有两个 Part类的成员 p1和p2。根据它们定义的顺序,应该先构造 p1再构造 p2,而不是按 Whole的构造函数中初始化列表的顺序那样构造。所以,第 1个被构造的是 p1(y),输出一个 2;第 2个被构造的是 p2(x),输出一个 1;最后调用自身构造函数,输出 val的值 3。析构函数严格与 之相反。故输出结果为 213312,本题应该选择 B。 30 【正确答案】 D 【试题解析】 本题考查的知识点是:类的构造。建立一个类的对象时,构造函数的执行顺序如下: 执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序 (自左向右 ); 执行成员对

46、象的构造函数,调用顺序按照各个成员对象在类中声明的顺序 (自上而下 ): (如果一行声明了多个对象,则还要遵循自左向右 ) 执行自身的构造函数。 本题 Derived类继承于 Base类,所以首先会构造基类 Base,但 Derived类的构造函数没有初始化列表 ,所以将调用 Base类的默认构造函数,输出一个 0。接下来由于它的成员中还定义了一个 Base类的对象,而构造函数也没有显示初始化这个对象,所以再次调用 Base类的默认构造函数输出一个 0。最后构造自身,因为主函数中传入了构造参数 1,所以构造自身时输出了一个 1。故最终输出结果为001,应该选择 D。 31 【正确答案】 C 【

47、试题解析】 本题考查的知识点是:基类成员在派生类中的访问属性。基类中公有成员和保护成员在派生类中的访问属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派 生类中仍然是公有成员和保护成员:派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。本题中, D类从 B 类公有继承, B类中 fun1()为私有、 fun2()为公有、 varl 为保护,公有继承到 D类后 fun1()不可访问、 fun2()仍为公有、 varl仍为保护。 D类自身的 fun3()是保护属性。所以综上所述,只有从 B 类继承的 fun2()为公有属性,故本题应该选择 C。 32 【正确答案】 B 【试题解析】 本题考查的知识点是:虚函数与多态性。在成员函数声明

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

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

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