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

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

1、2006 年 9月国家二级( C+)笔试真题试卷及答案与解析 1 下列选项中不符合良好程序设计风格的是 ( A)源程序要文档化 ( B)数据说明的次序要规范化 ( C)避免滥用 goto语句 ( D)模块设计要保证高耦合、高内聚 2 从工程管理角度,软件设计一般分为两步完成,它们是 ( A)概要设计与详细设计 ( B)数据设计与接口设计 ( C)软件结构设计与数据设计 ( D)过程设计与数据设计 3 下列选项中不属于软件生命周期开发阶段任务的是 ( A)软件测试 ( B)概要设计 ( C)软件维护 ( D)详细设计 4 在数据库系统中,用户所见的数据模式为 ( A)概念模式 ( B)外模式 (

2、 C)内模式 ( D)物理模式 5 数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 ( A)编码设计 ( B)测试阶段 ( C)运行阶段 ( D)物理设计 6 设有如下三个关系表下列操作中正确的是( A) T RS ( B) T R S ( C) T RS ( D) T R S 7 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其 时间复杂度必定小 ( C)一个算法的时间复杂度火,则其空间复杂度必定小 ( D)上述三种说法都不对 8 在长度为 64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 ( A) 63 (

3、B) 64 ( C) 6 ( D) 7 9 数据库技术的根本目标是要解决数据的 ( A)存储问题 ( B)共享问题 ( C)安全问题 ( D)保护问题 10 对下列二叉树进行中序遍历的结果是 ( A) ACBDFEG ( B) ACBDFGE ( C) ABDCGEF ( D) FCADBEG 11 下列有关内联函数的 叙述中,正确的是 ( A)内联函数在调用时发生控制转移 ( B)内联函数必须通过关键字 inline来定义 ( C)内联函数足通过编译器来实现的 ( D)内联函数函数体的最后一条语句必须是 return语句 12 下列情况中,不会调用拷贝构造函数的是 ( A)用一个对象去初始化

4、同一类的另一个新对象时 ( B)将类的一个对象赋值给该类的另一个对象时 ( C)函数的形参是类的对象,调用函数进行形参和实参结合时 ( D)函数的返回值是类的对象,函数执行返回调用时 13 下列有关继承和派生的叙述中,正确的是 ( A)如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员 ( B)派生类的成员函数可以防问基类的所有成员 ( C)基类对象可以赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 14 下列运算符不能重载为友元函数的是 ( A) ()- ( B) + - + - ( C) ( D) + - * / 15 关于在调用模板

5、函数时模板实参的使用,下列表述正确的是 ( A)对于虚拟类型参数所对应的模板实参,如果能从模 板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 ( D)对于常规参数所对应的模板实参,任何情况下都不能省略 16 下列关于输入流类成员函数 getline()的描述中,错误的是 ( A)该函数是用来读取键盘输入的字符串的 ( B)该函数读取的字符串长度是受限制的 ( C)该函数读取字符串时,遇到终止符便停止 ( D)该函数读取字符串时,可以包含空格

6、17 下列符号中,正确的 C+标识符是 ( A) enum ( B) 2b ( C) foo-9 ( D) _32 18 下列语句中,错误的是 ( A) const int buffer=256; ( B) const double *point; ( C) int const buffer=256; ( D) double * const point; 19 if语句的语法格式可描述为: 格式 1: if(条件 )语句 或 格式 2: if(条件 )语句 1 else语句 2 关于上面的 语法格式,下列表述中错误的是 ( A)条件部分可以是一个 if语句,例如 if(if(a=0) ( B)

7、语句部分可以是一个 if语句,例如 if()if() ( C)如果在条件前加上逻辑非运算符 !并交换语句 1和语句 2的位置,语句功能不变 ( D)语句部分可以是一个循环语句,例如 if()while() 20 有如下说明 int a10=1,2,3,4,5,6,7,8,9,10, *p=a; 则数值为9的表达式是 ( A) *p+9 ( B) *(p+8) ( C) *p+=9 ( D) p+8 21 若有下面的函数调用: fun(a+b, 3, max(n-1, b) 则 fun的实参个数是 ( A) 3 ( B) 4 ( C) 5 ( D) 6 22 以下关键字不能用来声明类的访问权限的

8、是 ( A) public ( B) static ( C) protected ( D) private 23 在公有继承的情况下,允许派生类直接访问的基类成员包括 ( A)公有成员 ( B)公有成员和保护成员 ( C)公有成员、保护成员和私有成员 ( D)保护成员 24 关于运算符重载,下列表述中正确的是 ( A) C+已有的任何运算符都可以重载 ( B)运算符函数的返回类型不能声明为基本数据类型 ( C)在类型转换符函数的定义中不需要声明返回类型 ( D)可以通过运算符重载来创建 C+中原来没有的运算符 25 关于关键字 class和 typename,下列表述中正确的是 ( A)程序中

9、的 typename都可以替换为 class ( B)程序中的 class都可以替换为 typename ( C)在模板形参表中只能用 typename来声明参数的类型 ( D)在模板形参表中只 能用 class或 typename来声明参数的类型 26 有如下程序 #include iostream #include iomanip using namespace std; int main() cout setprecision(3) fixed setfill(*) setw(8); cout 12.345 _34.567; return 0; 若程序的输出是: * 12.345*34.

10、567 则程序中下划线处遗漏的操作符是 ( A) setprecision(3) ( B) fixed ( C) setfill(*) ( D) setw(8) 27 有如下程序 #include iostream #include iomanip using namespace std; class MyClass public: MyClass() cout A; MyClass(char c) cout c; MyClass() coutB; ; int main( ) MyClass p1,*p2; p2=new MyClass(X); delete p2; return 0; 执行这

11、个程序屏幕上将显示输出 ( A) ABX ( B) ABXB ( C) AXB ( D) AXBB 28 有如下程序 #include iostream using namespace std; int i=1; class Fun public: static int i; int value( ) return i-l; int value( )const return i+1; ; int Fun:i=2; int main( ) int i=3; Fun funl; const Fun fun2; _ return 0; 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是 (

12、A) cout funl.value( ) Fun:i fun2.value( ); ( B) cout Fun:i funl.value() fun2.value( ); ( C) cout funl.value( ) fun2.value( ) Fun:i; ( D) cout fun2.value( ) Fun:i fun1.value( ); 29 有如下程序: #include iostream using namespace std; class Obj static int i; public: Obj( )i+; Obj()i-; static int getVal( ) re

13、turn i; ; int Obj:i=0; void f() Obj ob2; cout ob2.getVal( ); int main( ) Obj ob1; f(); Obj *ob3=ew Obj; cout ob3-getVal( ); delete ob3; cout Obj:getVal( ); return 0; 程序的输出结果是 ( A) 232 ( B) 231 ( C) 222 ( D) 221 30 有如下程序 #include iostream using namespace std; class Base protected: Base( )cout A; Base

14、(char c) cout c; ; class Derived: public Base public: Derived(char c) cout c; ; int main( ) Derived d1 (B); return 0; 执行这个程序屏幕上将显示输出 ( A) B ( B) BA ( C) AB ( D) BB 31 有如下类定义: class MyBase int k; public: MyBase(int n=0):k(n) int value( )const return k; ; class MyDerived: MyBase intj; public: MyDerive

15、d(int i): j(i) int getK( )const return k; int getJ( )const return j; ; 编译时发现有一处语法错误,对这个错误最准确的描述是 ( A)函数 getK试图访问基类的私有成员变量 k ( B)在类 MyDerived 的定义中,基类名 MyBase前缺少关键字 public、 protected或 private ( C)类 MyDerived缺少一个无参的构造函数 ( D)类 MyDerived的构造函数没有对基类数据成员 k进 行初始化 32 在一个派生类对象结束其生命周期时 ( A)先调用派生类的析构函数后调用基类的析构函数

16、 ( B)先调用基类的析构函数后调用派生类的析构函数 ( C)如果基类没有定义析构函数,则只调用派生类的析构函数 ( D)如果派生类没有定义析构函数,则只调用基类的析构函数 33 有如下的运算符重载函数定义: double operator +(int i, int k)return double(i+k); 但定义有错误,对这个错误最准确的描述是 ( A) +只能作为成员函数重载 ,而这里 的 +是作为非成员函数重载的 ( B)两个 int型参数的和也应该是 int型,而这里将 +的返回类型声明为 double ( C)没有将运算符重载函数声明为某个类的友元 ( D) C+已经提供了求两个

17、int型数据之和的运算符 +,不能再定义同样的运算符 34 语句 ofstream f(“SALARY DAT“, ios_base:app);的功能是建立流对象 f,并试图打开文件 SALARY.DAT与 f关联,而且 ( A)若文件存在,将其置为空文件;若文件不存在,打开失败 ( B)若文件存在,将文件指针定位于文件尾: 若文件不存在,建立一个新文件 ( C)若文件存在,将文件指针定位于文件首;若文件不存在,打开失败 ( D)若文件存在,打开失败;若文件不存在,建立一个新文件 35 有如下程序 #include iostream using namespace std; class A p

18、ublic: virtual void funcl( ) cout“A1“; void func2( ) cout “A2“; ; class B:public A public: void funcl( ) cout “B1“; void func2( ) cout “B2“; ; int main( ) A *p=new B; p- func1 ( ); p-func2( ); return 0; 运行此程序,屏幕上将显示输出 ( A) B1B2 ( B) A1A2 ( C) B1A2 ( D) A1B2 36 下列软件系统结构图的宽度为【 】。 37 【 】的任务是诊断和改正程序中的错误

19、。 38 一个关系表的行称为【 】。 39 按 “先进后出 ”原则组织数据的数据结构是【 】。 40 数据结构分为线性结构和非线性结构,带链的队列属于【 】。 41 若有定义语句: int* a, b;,则变量 b的数据类型是【 】。 42 已知数组 a中的元素个数为 n,下列语句的作用是将下标为 i的元素移动到下标为 i-1的单元,其中 1i n。例如,当 n 4, a中原有数据为 1, 2, 3, 4时,则移动后 a中元素变为 2, 3, 4, 4。请将语句补充完整: for(int i=0; i n-1; i+) ai=a【 】 ; 43 已知递归函数 f的定义如下: int f(int

20、 n) if(n =1)return 1; /递归结束情况 else return n*f(n-2); /递归 则函数调用语句 f(5)的返回值是【 】。 44 创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。下列程序涉及到 对象数组的创建和单个对象的创建,其输出结果是【 】。 #include iostream using namespace std; class Foo public: Foo(int x)cout A; Foo() ; int main() Foo f3, g(3); return 0; 45 已知下列程序的输出

21、结果是 42, 请将画线处缺失的部分补充完整。 #include iostream using namespace std; class Foo int value; public: Foo( ): value(0) void setValue(int value) 【 】 =value; /给 Foo的数据成员 value赋值 void print( ) cout value; ; int main( ) Foo f; f.setValue(42); f.print(); return 0; 46 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问问从基类继承的成员。

22、下列程序没有使用多态机制,其输出结果是【 】。 #include iostream using namespace std; class Base public: void print ( ) cout B; ; class Derived: public Base public: void print ( ) cout D; int main( ) Derived* pd = new Derived( ); Base* pb = pd; pb- print( ); pd-print(); delete pd; return 0; 47 在声明派生类时,如果不显 式地给出继承方式,缺省的类继承

23、方式是私有继承private。 已知有如下类定义: class Base protected: void fun() ; class Derived: Base; 则 Base类中的成员函数 fun(),在 Derived类中的访问权限是【 】 (注意:要求填写 private、 protected或 public中的一项 )。 48 在 MyClass类的定义中,对赋值运算符二进行重载。请将画线处缺失的部分补充完整。【 】 MyClass:operator (const MyClassj 0; -j) if(t =aj-1)break; aj=aj-1; aj=t; protected: i

24、nt*a, n; /指针 a用于存放数组首地址, n用于存放数组元素个数 ; 50 下列程序的输出结果是【 】。 #include iostream using namespace std; class A int a; public: A():a(9) virtual void print() const cout a; ; class B: public A char b; public: B( )b=S; void print() const cout b; ; void show(A int main() Ad1,*p; B d2; p= d1.print(); d2.print0;

25、p- print(); show(d1); show(d2); return 0; 2006 年 9月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 D 【试题解析】 编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。更直接的说,风格就是意味着要按照规则进行编程。这些规则包括: (1)程序文档化。就是程序文档包含恰当的标识符,适当的注解和程序的视觉组织等。 (2)数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。此外,为方便查找,在每个说 明语句的说明符后,数据名应按照字典顺序排列。 (3)功能模块化。即把源程序代码按照功能划分为低耦

26、合、高内聚的模块。 (4)注意 goto语句的使用。合理使用 goto语句可以提高代码的运行效率,但 goto语句的使用会破坏程序的结构特性。因此,除非确实需要,最好不使用 goto语句。因此,本题的正确答案是 D。 2 【正确答案】 A 【试题解析】 从工程管理的角度,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架:详细设计是将其进一步精化成软件的算法或表示和数据结构。而在技术 上,概要设计和详细设计又由若干活动组成,包括总体结构设计、数据设计和过程设计。因此,本题的正确答案是A。 3 【正确答案】 C 【试题解析】 软件生命周期由软件定义、软件开发和软

27、件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久的满足用 户的需要。即当软件在使用过程中发现错误时应加以改正:当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项 C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是 C。 4 【正确

28、答案】 B 【试题解析】 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式也称子模式或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式也称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有 用户所见到的数据视图的总和。内模式也称存储模式或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方法的描述。根据上述介绍可知,数据库系统中用户所见到的数据模式为外模式。因此,本题的正确答案是 B。 5 【正确答案】 D 【试题解析】 数据库的生命周期可以分为两个阶段:一是数据库设计阶段:二是数据库实现阶段。数据库的设计阶段又分为如下四个

29、子阶段:即需求分析、概念设计、逻辑设计和物理设计。 因此,本题的正确答案是 D。 6 【正确答案】 C 【试题解析】 本题考查数据库的关系代数运算。 R表中只有一个域名 A,有两个记录 (也叫元组 ),分别是 m和 n: S 表中有两个域名,分别是 B和 C,其所对应的记录分别为 1和 3。注意观察表 T,它是由 R的第一个记录依次与 S的所有记录组合,然后再由 R的第二个记录与 s的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡尔积运算规则。关系代数中,笛卡尔积运算用 “x”来表示。因此,上述运算可以表示为 T=RS。因此,本题的正确答案为 C。 7 【正确答案】 D 【试题解

30、析】 时间复杂度是指一个算法执行时间的相 对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销:有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项 A、 B、 C的说法都是错误的。故本题的正确答案是 D。 8 【正确答案】 B 【试题解析】 在长度为 64的有序线性表 中,其中 64个数据元素是按照从大到小或从小到

31、大的顺序排列有序的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不在线性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到在线性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为 64的有序线性表中进行顺序查找,最坏的情况下需要比较 64次。因此, 本题的正确答案为B。 9 【正确答案】 B 【试题解析】 数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数

32、据共享的要求越来越高。共享的含义是多个用户、多种语言、多个应用程序相互覆盖的使用一些公用的数据集合。在这样的背景下,为了满足多用户、多应用共,享数据的要求,就出现了数据库技术,以便对数据库进行管理。因此,数据库技术的根本目标就是解决数据的共享问题。故选项 B 正确。 10 【正确答案】 A 【试题解析】 二叉树的中序遍历递归算法为:如果根不空,则 (1)按中序次序访问左 子树; (2)访问跟结点; (3)按中序次序访问右子树。否则返回。本题中,根据中序遍历算法,应首先按照中序次序访问以 C为根结点的左子树,然后再访问根结点 P,最后才访问以 E 为根结点的右子树。遍历以 C为根结点的左子树同样

33、要遵循中序遍历算法,因此中序遍历结果为 ACBD;然后遍历根结点 F;遍历以 E为根结点的右子树,同样要遵循中序遍历算法,因此中序遍历结果为 EG。最后把这三部分的遍历结果按顺序连接起来,中序遍历结果为 ACBDFEG。因此,本题的正确答案是 A。 11 【正确答案】 C 【试题解析】 本题考查了内联 函数的概念。在调用的时候,内联函数会像宏函数一样的展开,所以它没有一般函数的参数压栈和退栈操作,所以选项 A不正确。在 C+中,编译器会将在类的说明部分定义的函数认定为内联函数,即使它们没有用 inline说明,所以选项 B不正确。内联函数除了比普通函数有更高的执行效率外,跟普通函数没有任何区别

34、,因此选项 D也不正确。 4个选项中只有 C正确。 12 【正确答案】 B 【试题解析】 本题考查的是拷贝构造函数的概念。拷贝构造函数发生在,用一个已知的对象初始化一个正在创建的同类对象的时候。因此,选项 A、 C、 D均会 调用拷贝构造函数。而选项 B 没有创建的动作,它会调用的函数是重载的赋值运算符函数。故应该选择 B。 13 【正确答案】 D 【试题解析】 本题考查的知识点是继承和派生。无论是公有、保护还是私有继承,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项 A和 B不正确。公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。子类型关系是可以

35、传递的,但是不可逆的。因此,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象。所以选项 C不正确。 4个选项中,只有选项 D正 确。 14 【正确答案】 A 【试题解析】 本题考查运算符重载的概念。 C+语言规定,、 、 ()、 -以及所有的类型转换运算符只能作为成员函数重载。而要重载为友元函数就必须重载为非成员函数,故应该选择 A。 15 【正确答案】 D 【试题解析】 本题考查的是模板实参的省略。模板实参在以下几种情况中不能省略: 从模板函数实参表获得的信息有矛盾: 需要获得特定类型的返回值,而不管参数的类型如何; 虚拟类型参数没有出现在模板函数的形参表中; 函数模板含有

36、常规形 参。 故本题的正确答案是选项 D。 16 【正确答案】 A 【试题解析】 本题考查的是 getline()函数。 getline()函数的原型为:istream_type& getline(char_type*s, streamsizen, char_type delim);,其功能是从当前输入位置开始提取字符存入 s所指向的具有 n个字节的字符空间中。字符的提取与存储在遇到下列情况时停止: 已提取并存储了 n-1个字符; 到流尾,无字符可提取; 下一个要提取的字符等于结束标志字符 delim。 因此,选项 B、 C、 D都是正确的。 getline()函数不仅可以用宋读取键盘输入的字

37、符串,还可以用来读取文件等数据流,故选项 A不正确。 17 【正确答案】 D 【试题解析】 本题考查 C+语言中的标识符的定义。标识符不是一个随意的字符序列,定义标识符时一般应注意如下几点:第一个字符必须是字母或下划线,中间不能有空格;在第一个字母后,可以是任意字母、下划线和数字组成的字符序列:标识符的长度是任意的,但特定的编译系统能够识别的标识符长度是有限的。一般不要超过 31 个字符;标识符中大小写 字母是有区别的;用户定义标识符时,不要采用系统的保留字。选项 A是保留字:选项 B的第一个字符是数字:选项 C中的 -字符不合法。故应该选择 D。 18 【正确答案】 D 【试题解析】 本题考

38、查了常指针和指针常量的概念。常指针是指向一个常量的指针变量,即通过该指针无法修改所指向的内容,但其自身的内容可以改变,它是一个变量。选项 B中定义的 point就是一个合法的常指针。而指针常量是一个常量,即不能修改指针自身的内容,但可以通过该指针修改其所指向的内容。指针常量和其他常量一样,在定义的同时必须初始化。选项 D中的指针常量 point虽然定义没有错误,但没有初始化,编译无法通过。故应该选择 D。 19 【正确答案】 A 【试题解析】 本题考查的是 if语句。 if 语句的条件部分是一个表达式而不是语句,因此选项 A的说法不正确。 20 【正确答案】 B 【试题解析】 本题考查的是指针

39、的运用。因为指针 p 初始指向数组 a的首地址,所以 *p返回的是数组元素 a0的值,因此选项 A的结果是 1+9=10;选项 B 是取指针 p往后移动 8个单位位置处的值,即 a8的值 9;选项 C中表达式的值和选项A相同,只不过选项 C中的表达 式会改变 a0的值;选项 D的值是一个地址值,即数组元素 a8的地址值,该值无法确定。所以, 4个选项中只有选项 B正确。 21 【正确答案】 A 【试题解析】 本题考查的知识点是函数的调用。 C+中函数调用的一般形式为: 函数名 (实参表 ) 其中,实参表是以逗号分割的一系列表达式。因此,本例中 fun()函数的实参表是由 3个表达式组成: a+

40、b、 3和 max(n-1, b)。故应该选择 A。 22 【正确答案】 B 【试题解析】 本题考查了类的访问权限。在 C+中,类的访问权限一共有 3种,分别是: public(公有 )、 protected(保护 )和 private(私有 )。因此,本题应该选择B。 23 【正确答案】 B 【试题解析】 本题考查的是派生类对基类成员的访问。基类的成员有公有(public)、保护 (protected)和私有 (private)三种访问属性,类的继承方式也有公有继承 (public)、保护继承 (protected)和私有继承 (private)三种。无论哪种继承方式,派生类中的成员都不能访

41、问基类中的私有成员,但可以访问基类中的公有成员和保护成员。故应该选择 B。 24 【正确答案】 C 【试题解析】 本题考查了运算符重载的一些概念。 C+语言规定, “ ”、“ *”、 “- ”、 “:”和 “?: ”这五个运算符不能被重载,因此选项 A的说法不正确。运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定的,例如关系和逻辑运算符的返回值应该为 bool 型, bool 型是基本数据类型,所以选项B 的说法不正确。运算符重载是针对 C+中原有运算符进行的,不可能通过重载创造出新的运算符,所以选项 D的说法也不正确。故应该选择 C。 25 【正确答案】 A 【试题 解析】 本题

42、考查了 class 和 typename 两个关键字。关键字 class除了能用来定义类以外,还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时typename与 class 可以互换,但不能使用 typename宋定义类。因此,选项 B和C是错误的。在模板形参表中除了可以用 typename或 class 声明虚拟类型参数外,还可以使用普通类型声明常规参数,所以选项 C是错误的。故本题应该选择A。 26 【正确答案】 D 【试题解析】 本题考查的是输出的格式控制。本例中,操作符 setprecision 的作用是设置浮点数的精度;操作符 fixed 的作用是让浮点数按定点格式输出;操作

43、符setfill 的作用是设置填充字符;操作符 setw的作用是设置输入输出的宽度。宽度设置 setw是所有格式设置中惟一的一次有效的设置,即设置的宽度只对其后的一次输入输出操作有效,而其余操作符设置后会一直有效,直到再次设置时为止。因此,若下划线处什么也不填,则输出的结果应该为 *12.34534.567。和要求的输出相比较,只缺少两个填充字符 *。由此可知,下划线处应该填一个让 34.567的输出宽度为 8的操作符,即 setw(8)。 故应该选择 D。 27 【正确答案】 D 【试题解析】 本题主要考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生

44、存期即将结束的时候由系统自动调用。本例的 main()函数中,第 1条语句定义了一个 MyClass对象和一个 MyClass类型指针,此时创建了 1个对象,因为没有构造参数,故会调用默认构造函数,输出一个 A。第 2条语句通过 new 运算符动态创建了 1个 MyClass对象,此时传入了一个构造参数 X,所以会调用相应的构造函数,输出一个 X。第 3条语句使用 delete运算符释放了 1个对象,所以会调用 1次析构函数,输出一个 B。最后,当 main()函数结束时,局部变量 p1的生存期结束,故还要调用 1次析构函数输出一个 B。因此,最终输出结果是 AXBB,应该选择 D。 28 【

45、正确答案】 A 【试题解析】 本题主要考查的是常成员函数。 const关键字可以用于参与对重载函数的区分。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。由此可见,通过 fun1调用 value()函数时,是调用 前一个,而通过 fun2 调用 value()函数,是调用后一个。另外, value()函数中访问的 i是类中定义的数据成员 i,全局变量 i在类中被 “屏蔽 ”。观察 4个选项不难发现,要输出的表达式来来去去只有 3个: fun1 value()、 fun2 value()和 Fun:i。 fun1.valu

46、e()调用的是前一个 value()函数,输出 i-1,这里的 i是 Fun 类的成员 i,即等于 2-1=1。 fun2.value()调用的后一个 value()函数,输出 i+1=2+1=3。 Fun:i 是通过类名直接访问类的静态数据成员 i的值,即 2。所以正确的输出顺序应该是: fun1.value(), Fun:i,fun2.value()。故应该选择 A。 29 【正确答案】 D 【试题解析】 本题主要考查的是静态成员。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝 (副本 ),这个副本被所有属于这个类的对象共享。本例中, Obj类定义了一个静态数据成员

47、 i,并初始化为 0。在主函数中,首先定义了 1个该类对象 ob1,所以构造函数被执行 1次, i被加 1。然后调用函数 f(),该函数中又定义了一个对象 ob2,此时 i再次加 1变成 2,然后通过静态成员函数 getVal()输出 i的值 2。 f()函数结束了,局部变量 ob2被释放,故析构函数被调用了 1次, i变成 1。回到主函数中,又动态创建了 1个对象并让指针ob3指向它,所以 i变成 2,接着输出的值为 2。最后,释放动态创建的那个对象, i变为 1,所以最后输出的值为 1。因此,程序最终输出结果为 221,应该选择D。 30 【正确答案】 C 【试题解析】 本题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序如下: (1) 执行基类的构造函数,调用顺序按照各个基类被继承时声明 的顺序 (自左向右 ): (2) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声

展开阅读全文
相关资源
猜你喜欢
  • BS PD CEN TR 15697-2008 Cement — Performance ntesting for sulfate nresistance — State of nthe art report《水泥 硫酸盐腐蚀耐受性的性能试验 当前的工艺水平报告》.pdf BS PD CEN TR 15697-2008 Cement — Performance ntesting for sulfate nresistance — State of nthe art report《水泥 硫酸盐腐蚀耐受性的性能试验 当前的工艺水平报告》.pdf
  • BS PD CEN TR 15709-2008 Hardware for nfurniture — Terms for nslide fittings for sliding ndoors and roll fronts《家具五金件 滑门和卷门滑动配件的术语》.pdf BS PD CEN TR 15709-2008 Hardware for nfurniture — Terms for nslide fittings for sliding ndoors and roll fronts《家具五金件 滑门和卷门滑动配件的术语》.pdf
  • BS PD CEN TR 15716-2008 Solid recovered fuels n— Determination of ncombustion behaviour《固体再生燃料 燃烧特性的测定》.pdf BS PD CEN TR 15716-2008 Solid recovered fuels n— Determination of ncombustion behaviour《固体再生燃料 燃烧特性的测定》.pdf
  • BS PD CEN TR 15728-2016 Design and use of inserts for lifting and handling of precast concrete elements《预制混凝土提升和运输用嵌入件的设计和使用 组件》.pdf BS PD CEN TR 15728-2016 Design and use of inserts for lifting and handling of precast concrete elements《预制混凝土提升和运输用嵌入件的设计和使用 组件》.pdf
  • BS PD CEN TR 15729-2010 Plastics piping systems — nGlass-reinforced thermosetting nplastics (GRP) based on nunsaturated polyester nresin (UP) — Report on the determination.pdf BS PD CEN TR 15729-2010 Plastics piping systems — nGlass-reinforced thermosetting nplastics (GRP) based on nunsaturated polyester nresin (UP) — Report on the determination.pdf
  • BS PD CEN TR 15735-2008 1875 Postal services — Quality of service — Distance to access points《邮政服务 服务质量 访问接入点距离》.pdf BS PD CEN TR 15735-2008 1875 Postal services — Quality of service — Distance to access points《邮政服务 服务质量 访问接入点距离》.pdf
  • BS PD CEN TR 15739-2008 6875 Precast concrete nproducts — nConcrete finishes — nIdentification《预制混凝土产品 混凝土抹面 识别》.pdf BS PD CEN TR 15739-2008 6875 Precast concrete nproducts — nConcrete finishes — nIdentification《预制混凝土产品 混凝土抹面 识别》.pdf
  • BS PD CEN TR 15745-2015 Liquid petroleum products Determination of hydrocarbon types and oxygenates via multidimensional gas chromatography method Round Robin research rep.pdf BS PD CEN TR 15745-2015 Liquid petroleum products Determination of hydrocarbon types and oxygenates via multidimensional gas chromatography method Round Robin research rep.pdf
  • BS PD CEN TR 15753-2008 Packaging — nPackage leaflets for nmedicinal products — nBraille and other nformats for visually nimpaired people《包装 医疗产品用包装散页印刷品 视觉缺陷人员用盲文和其它版式》.pdf BS PD CEN TR 15753-2008 Packaging — nPackage leaflets for nmedicinal products — nBraille and other nformats for visually nimpaired people《包装 医疗产品用包装散页印刷品 视觉缺陷人员用盲文和其它版式》.pdf
  • 相关搜索

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

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