1、国家二级( C+)笔试模拟试卷 132及答案与解析 1 下列叙述中正确的是 ( A)数据的逻辑结构与存储结构必定一一对应 ( B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 ( C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 ( D)以上三种说法都不对 2 下列数据结构中,能用二分法进行查找的是 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 3 设树 T的度为 4,其中度为 1, 2, 3, 4的结点个数分别 为 4, 2, 1, 1。则 T中的叶子结点数为 ( A) 5 ( B) 6 ( C)
2、 7 ( D) 8 4 对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较次数为 ( A) log2n ( B) n/2 ( C) n ( D) n+1 5 下列对于线性链表的描述中正确的是 ( A)存储空间不一定是连续,且各元素的存储顺序是任意的 ( B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面 ( C)存储空间必须连续,且前件元素一定存储在后件元素的前面 ( D)存储空间必须连续,且各元素的存储顺序是任意的 6 下列叙述中正确的是 ( A)黑箱 (盒 )测试方法完全不考虑程序的内部结构和内部特征 ( B)黑箱 (盒 )测试方法主要考虑程序的内部结构和内部特征 ( C
3、)白箱 (盒 )测试不考虑程序内部的逻辑结构 ( D)上述三种说法都不对 7 为了使模块尽可能独立,要求 ( A)模块的内聚程序要尽量高,且各模块间的耦合程度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 8 下述关于数据库系统的叙述中正确的是 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型一致 ( D)数据库系统比文件系统能管理更多的数据 9 数据独立性是数据库技术的重要特点之一。
4、所谓数据独立性是指 ( A)数据与程序独立存放 ( B)不同的数据被存放在不同的文件中 ( C)不同的数据只能被对应的应用程序所使用 ( D)以上三种说法都不对 10 用树形结构表示实体之间联系的模型是 ( A)关系模型 ( B)网状模型 ( C)层次模型 ( D)以上 3个都是 11 下列关于 C+函数的说明中,正确的是 ( )。 ( A)内联函数就是定义在另一个函数体内部的函数 ( B)函数体的最后一条语句必须是 return语句 ( C)标准 C+要求在调用一个函数之前,必须先声明其原型 ( D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 12 下列关于类和对象的叙述中
5、,错误的是 ( )。 ( A)一个类只能有一个对象 ( B)对象是类的具体实例 ( C)类是对某一类对象的抽象 ( D)类和对象的关系是一种数据类型与变量的关系 13 有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIVED:protected MyBASE protected: int j: public: void set(int m,int n)MyBASE:set(m);j=n; int get()constreturn MyBASE:get()+j
6、; ; 则类 MyDERIVED中保护的数据成员和成员函数的个数是( )。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 14 下列关于继承的描述中,错误的是 ( )。 ( A)析构函数不能被继承 ( B)派生类是基类的组合 ( C)派生类的成员除了它自己的成员外,还包含了它的基类的成员 ( D)派生类中继承的基类成员的访问权限到派生类保持不变 15 对基类数据成员的初始化必须在派生类的 ( )中的成员初始化列表 处执行。 ( A)派生函数 ( B)析构函数 ( C)内联函数 ( D)构造函数 16 若有如下程序: #include iostream using namespace
7、std; class A public: A(int i,int j) a=i; b=j; void move(int x,int y) a+=x; b+=y; void show() cout a “,“ b end1; private: int a,b; ; class B:private A public: B(int i,int j):A(i,j) void fun() move(3,5); void f1() A:show(); ; int main() B d(3,4); d.fun(); d.f1(); return 0; 程序执行后的输出结果是 ( )。 ( A) 3,4 (
8、B) 6,8 ( C) 6,9 ( D) 4,3 17 下列程序的输出结果是 _。 #include iostream using namespace std; class Test( public: Test() cnt+; Test() cnt-; static int Count()return cnt; private: static int cnt; ; int Test:cnt=0; int main() cout Test:Count() “; Test t1,t2; Test*pT3=new Test; Test*pT4=new Test; cout Test:Count()
9、“; delete pT4; delete pT3; cout Test:Count() end1; return 0; ( A) 024 ( B) 042 ( C) 420 ( D) 240 18 下列有关拷贝构造函数的描述中错误的是 ( )。 ( A)拷贝构造函数是一种构造函数 ( B)拷贝构造函数与一般的构造函数一样,可以设置多个形参 ( C)每一个类中都必须有一个拷贝构造函数 ( D)拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。 19 下列对静态数据成员的描述中,正 确的是 ( )。 ( A)静态数据成员是类的所有对象共享的数据 ( B)类的每个对象都有自己的静态数据
10、成员 ( C)类的不同对象有不同的静态数据成员值 ( D)静态数据成员不能通过类的对象调用 20 函数 swap(a, n)可完成对 a数组从第 1个元素到第 n个元素两两交换。其中b0=1;b1=2;swap(b,2)。在运行调用函数中的语句后, b0和 b1的值分别为( )。 ( A) 1,1 ( B) 1,2 ( C) 2,2 ( D) 2,1 21 假定 a=3,下列程序的运行结果是 ( )。 #include iostream.h int fun(int n); void main() cout “Please input a number:“; int a,result=0; ci
11、n a; result=fun(a); cout result end1; int fun(int n) int p=1,result=0; for(int i=1;i n;i+) p*=i; result +=p; return result; ( A) 4 ( B) 8 ( C) 9 ( D) 20 22 如果有以下定义及初始化: int a=3, *p= 则由此可以推断, *p的值是( )。 ( A)变量 a的值,即 3 ( B)变量 a的地址值 ( C)变量 p的地址值 ( D)无意义 23 下列程序运行后的输出结果是 ( )。 #include iostream.h void fun
12、(int,int,int*); void main() int x,y,z; fun(5,6, fun(7,x, fun(x,y, cout x “,“ y “,“ z end1; void fun(int a,int b,int *c) b+=a; *c=b-a; ( A) 5, 5, 5 ( B) 6, 6, 6 ( C) 5, 6, 7 ( D) 7, 7, 7 24 下列程序输出的结果是 ( )。 #include stdio.h fun1(char a,char b) char c;c=a;a=b;b=c; fun2 (char*a,char b) char c;c=*a;*a=b;
13、b=c; fun3(char*a,char*b) char c;c=*a;*a=*b;*b=c; void main() char a,b; a=A;b=B; fun1 (a,b);putchar(a);putchar(b); a=A;b=B; fun2 (putchar(a);putchar(b); a=A;b=B; fun3 (putchar(a);putchar(b); putchar(n); ( A) BABBAB ( B) ABBBBA ( C) ABBABA ( D) ABABBA 25 下列程序将 x、 y和 z按从小到大的顺序排列,请将下面的函数模板补充完整。 template
14、 class T void fun (_) T a; if(x y) a=x; x=y;y=a; if(y z) a=y; y=z;z=a; if(x y) a=x; x=y;y=a; ( A) T x,T y,T z ( B) T x;y;z ( C) T TestClass () x=y=0; TestClass (int a,int b)x=a;y=b; void disp() cout “x=“ x “,y=“ y end1; void main() TestClass s1(2,3); s1.disp(); ( A) x=2,y=2 ( B) x=2,y=3 ( C) x=3,y=2
15、 ( D) x=3,y=3 27 若有如下程序: #include iostream using namespaee std; int fun() static int i=0; int s=1; s+=i; i+; return s; int main() int i,a=0; for(i=0;i 5;i+) a+=fun(); cout a end1; return 0; 程序运行后,输出的结果是 ( )。 ( A) 20 ( B) 24 ( C) 25 ( D) 15 28 对虚函数的调用 ( )。 ( A)一定使用动态联编 ( B)必须使用动态联编 ( C)一定使用静态联编 ( D)不
16、一定使用动态联编 29 下列程序的运行结果是 ( )。 #include iostream.h int x=5; int fun(int a) int c; c=x*a; return c; void main() int x=3,a=4; x=x+fun(a); cout “x=“ x end1; ( A) x=15 ( B) x=17 ( C) x=23 ( D) x=25 30 静态数据成员是为 ( )的数据。 ( A)私有 ( B)保护 ( C)所有对象共享 ( D)类成员 31 下列字符串中,正确的 C+标识 符是 ( )。 ( A) foo-1 ( B) 2b ( C) new (
17、 D) 256 32 在下列函数原型中,可以作为类 AA构造函数的是 ( )。 ( A) void AA(int); ( B) int AA(); ( C) AA(int)const; ( D) AA(int); 33 有如下程序: #include iostream using namespace std; class A public: A()cout “A“; ; classBpublic:B()cout “B“; classC:public A B b; public: C()cout “C“; ; int main() C obj; return 0; 执行后的输出结果是 ( )。
18、( A) CBA ( B) BAC ( C) ACB ( D) ABC 34 有如下程序: #include iostream using namespace std; class BASE public: BASE()cout “BASE“; ; class DERIVED:public BASE public: DERIVED()cout “DERIVED“; ; int main()DERIVED x;return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 35 关于在调用模板 函
19、数时模板实参的使用,下列表述正确的是 ( )。 ( A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 ( D)对于常规参数所对应的模板实参,任何情况下都不能省略 36 软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于_中的一个阶段。 37 结构化分析方法是面向 _进行分析的方法。 38 常用的软件结构设计工具是结构图 (SC) ,也称程序结构图。其中,用矩形表示 _,用带空心圆的箭
20、头表示传递的是数据。 39 在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块,其中 _的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。 40 诊断和改正程序中错误的工作通常称为 _。 41 有如下类声明: class MyClass int i; private:int j; protected:int k; public:int m,n; ; 其中,私有成员的数量为 _。 42 对基类数据成员的初始化必须派生类的构造函数中的 _处执行。 43 下列程序输出结果为: #include iostream using namespace std; cl
21、ass TestClass1 public: TestClass1() TestClass1(int i) x1=i; void dispa() cout “x1=“ x1 “,“; private: int x1; ; class TestClass2:public TestClass1 public: TestClass2() TestClass2(int i):TestClass1(i+10) x2=i; void dispb() dispa(); cout “x2=“ x2 endl; private: int x2; ; int main() TestClass2 b(2); b.d
22、ispb(); return 0; 44 下列程序的输出结果为: Objectid=O Obiectid=1 请将程序补充完整。 #include iostream using namespace std; class Point public: Point(int xx=0,int yy=0)X=xx;Y=yy;countP+; Point()countP-; int GetX()return X; int GetY()return Y; static void GetC()cout “Object id=“ countP endl; private: int X,Y; static int
23、 countP; ; _/静态数据成员的初始化 int main() Point:GetC(); Point A(4,5); A.GetC(); return 0; 45 假定用户没有给一个名为 MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为 _。 46 创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。下列程序涉及对象数组的创建和单个对象 的创建,其输出结果是 _。 #include iostream using namespace std; class Foo public: Foo(int x)cout A
24、; Foo() ; int main() Foo f3,g(3); return 0; 47 多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但运算符 只能作为类的 _函数重载。 48 下 面是复数类 complex的定义,其中重载的运算符 “+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,虚部等于两个操作对象虚部之和;请补充完整。 class complex double real; /实 double imag; /虚部 public: complex( double r, double i):real(r),imag(i) complex operato
25、r + (complex a) return complex(_); ; 49 已知一个函数模板定义为: template typename T1, typename T2 T1 FUN(T2 n)return n*5.0; 若要求以 int型数据 7为函数实参调用该模板函数,并返回一个 double型数据,则该调用应表示为 _。 50 执行下列语句 后,变量 sum的值是 _。 int sum=0; for(int i=1;i =3;i+) for(int j=1;j =i;j+) sum+; 国家二级( C+)笔试模拟试卷 132答案与解析 1 【正确答案】 D 【试题解析】 一种数据的逻
26、辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的,因此选项 A错误。计算机的存储空间是向量式的存储结构,但一种数据的逻辑结构根据需要可以表示成多种存储结构,如线性链表是线性表的链式存储 结构,数据的存储结构不一定是线性结构,因此选项 B 错误。数组一般是顺序存储结构,但利用数组也能处理非线性结构。选项 C错误。只有选项 D的说法正确。 2 【正确答案】 A 【试题解析】 二分法查找只适用于顺序存储的有序线性表。在此所说的有序线性表是指线性表中的元素按值非递减排列 (即从小到大,但允许相邻元素值相等 )的。选项 A正确。 3 【正确答案】 D 【试题解析】
27、根据给定的条件,在树中,各结点的分支总数为:41+22+13+41+15;树中的总结点数为: 15(各结点的分支总数 )+1(根结点 )=16;非叶子结点总数为: 4+2+1+1=8。因此,叶子结点数为 166总结点数 ),8(非叶子结点总数 )=8。因此,本题的正确答案为 D。 4 【正确答案】 C 【试题解析】 在长度为 n 的线性表中进行顺序查找,最坏情况下需要比较 n 次。选项 C正确。 5 【正确答案】 A 【试题解析】 在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项
28、A的描述正确。 6 【正确答案】 A 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例,选项 A是正确的,选项 B 错误。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,选项 C错误。正确答案为 A。 7 【正确答案】 B 【试题解析】 系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。 综上所述,选项 B 的答案正确。 8 【正确答案】 A
29、 【试题解析】 数据库是一个通用化的、综合性的数据集合,它可以为各种用户所共享,具有最小的冗余度和较高的数据与程序的独立性,而且能并发地为多个应用服务,同时具有安全性和完整性。即数据库系统减少了数据冗余,但不能避免一切冗余。所以选项 A正确,选项 B 错误。在数据库管理阶段中,数据是结构化的,面向系统,数据冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性。数据的不一致性,是指对数据的存取方式,选项 C错误。 数据库系统比文件系统能管理更多的数据,并非是数据库系统的特点,选项 D错误。本题正确答案是 A。 9 【正确答案】 D 【试题解析】 数据
30、具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构 (它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改 )与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其 局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。综上所述,本题的正确答案是 D。 10 【正确答案】 C 【试题解析】 在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统 (DBMS)也不同。目
31、前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集 (记录型 )是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是 C。 11 【正确答案】 C 【试题解析】 选项 A) 中,内联函数不 是定义在另一个函数体内部的函数,而是将 incline放在函数定义中函数类型之前;函数体的最后一条语句可以是任意的语句,选项 B) 错误;编译器不会根据函数返回值的类型来区分重载形式,选项 D) 错误。标准 C+要求在调用一个函数之前,必须先声明其原型,选项 C) 正确。 12 【正确答案】 A 【试题解析】 此题考查的
32、是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。 13 【正确答案】 B 【试题解析】 因为在保护继承的情况下,基类中的公有成员 void set(int n)和 int get()const在派生类中是保护成员,再加上派生类自身的保护成员 j,一共是 3个保护成员。 14 【正确答案】 D 【试题解析】 派生类中继承的基类成员的访问权限到派生类会发生变化,例如:私有继承时,派生类不能访问基类的成员,所以选项 D) 错误,其他选项均正确。 15
33、【正确答案】 D 【试题解析】 C+语言规定对基类数据成员的初始化必须在派生类 的构造函数中的成员初始化列表中进行。 16 【正确答案】 C 【试题解析】 此题的执行过程如下:首先 B d(3,4);语句调用 B 类的构造函数,B(int i,int j), B 的构造函数中调用基类 A的构造函数,使得 a=3,b=4;d.fun()会调用函数 move(3,5),使得 (3,4)和 (3,5)的对应部分分别相加,最后输出 6,9。 17 【正确答案】 B 【试题解析】 此题考查的是类的构造函数与析构函数的调用。语句 coutTcst:Count() “;;输出 “0”,因为 static型变
34、量 cnt的默认值是 0; “T Test t1,t2;Test*pT3=new Test;Test*pT4=new Test;”调用 4次类的构造函数,使得 cnt的值增加到 4,并输出 4;然后 delete pT4;delete pT3;调用两次析构函数, cnt的值变为 2,并输出 2。 18 【正确答案】 B 【试题解析】 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造 函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造函数。 19 【正确答案】 A
35、 【试题解析】 静态成员表示整个类范围共享的信息;必须对静态数据成员进行初始化;静态数据成员是属于类的,不能通过类的对象调用。 20 【正确答案】 D 【试题解析】 如果函数实参是数组名,形参也应为数组名,函数 swap 中形参进行了交换,实际上也是实参进行了交换。而且数组名代表数组首元素的地址,并不代表数组的全部元素。所以, swap(b,2)是数组 b 第一个元素与第二个元素进行交换,即 b0与 b1,根 据题干,知道答案为 2, 1。 21 【正确答案】 C 【试题解析】 由程序 main 主函数入手,调用 fun 函数获得返回值 result输出。题目中假定 a=3,即调用语句 fun
36、(a)中的输入参数为 a,进入 fun 函数,在 for循环中当 i小于等于 n,即输入参数 3时,循环 3次执行 “p*=i;result+=p;”语句。即执行 3次 p=p*i, result=result+p, result的结果为 9。返回的 fun 函数结果为 9,即 “cout result end1;”输出 9。 22 【正确答案】 A 【试题解析】 题目中的定义初始化是定义一个整型变量 a,初始化为 3。而“int*p=”是定义一个整型指针变量 p,将变量 a的地址作为指针变量 p的初值。 *p是指针变量 P指向的存储单元,即变量值。所以 *p指向 a的值 3。 23 【正确答
37、案】 B 【试题解析】 由程序中的 main 函数入手,分别调用 fun函数,第一个调用中 x参数为引用地址,调用后 x的值为 6,因为参数为地址,所以第二个调用中的 x参数值为 6,调用后 y的计算结果为 6。同理, z在第三个函数调用后 z的值为 6。 24 【正确答案】 B 【试题解析】 由程序中的主函数 main 入手,分别调用 fun1, fun2, fun3函数,得出输出结果。其中, 3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以 d调用 fun1后,实参 a和 b并没有交换,仍然
38、是 AB。第二个调用中,实参 a采用的是地址,即传递的是地址,所以形参 a的改变会影响实参 a的值,即 BB。同理,调用 fun3后为 BA 25 【正确答案】 C 【试题解析】 函数 fun 的类型为 void 没有任何 返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T 是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为 “T y=b;)”。然后引用成员函数 disp(),则输出为 “cout ”x=“ x ”,y=“ y end1;”。即 x=2,y=3。 27 【正确答案】 D 【试题解析】 由主函数入手,在 for循环
39、中调用 fun函数,其中调用次数为 5次。 fun中 i为静态变量,有效到文件结束。第一次调用 fun后为 s=1,a=1;第二次调用后 s=2,a=3;第三次 s=3,a=6;第四次 s=4,a=10;第五次 s=5,a=15。 28 【正确答案】 D 【试题解析】 虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函数声明只能出现在类声明的虚函数原型中,而不能在成员的函数 体实现时。必须由成员函数来调用成员函数来调用或者通过指针、引用来访问虚函数。如果通过对象名来访问虚函数,则联编在编译过程中认为是静态联编。 29 【正确答案】 C 【试题解析】 由主函数 mian 入手,首先 x
40、被赋值为 3, a被赋值为 4。然后调用fun函数,参数为 4,所以在 fun 函数中的 a=4。而主程序中的 x作用域是由它定义开始到 cout输出,在 fun 函数中无效。而在 fun 函数定义前的变量 x作用域是整个程序,所以 fun函数中的 x值为 5,这样 c的值就为 20。在主函数中的x+fun(a)中的 x为靠近这条语句 的 x定义,即 3,所以最后 x的值为 20+3=23。 30 【正确答案】 C 【试题解析】 静态数据成员是一种特殊的数据成员。静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。所有对象共享这些静态数据成员,都可以引用它。 31
41、 【正确答案】 D 【试题解析】 此题考查的是 C+语言中标识符的定义。标识符由字母、数字或下划线构成,但第一个字符必须是字母或下划线:标识符中大小写字母是不同的;用户定义标识符时,不允许采用系统的关键字。 32 【正确答案】 D 【试题解析】 此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项 A)和选项 B)不符合要求。选项 C)中函数AA会更新对象的数据成员。 33 【正确答案】 D 【试题解析】 此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化:然后对派生类中的新增成员初始化。 34 【正确答案】
42、D 【试题解析】 此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行 派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。 35 【正确答案】 D 【试题解析】 此题考查的是模板实参的省略。模板实参在以下几种情况中不能省略,从模扳函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中;函数模板含有常规形参。 36 【正确答案】 软件开发 【试题解析】 软件生命周期分为 3个时期共 8个阶段:
43、软件定义期 (问题定义、可行性研究和需求分析 )、软件开发期 (系统设计、详细设计、编码和测试 ),软件维护期 (即运行维护阶段 )。 37 【正确答案】 数据流 【试题解析】 结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 38 【正确答案】 模块 【试题解析】 矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。 39 【正确答案】 驱动模块 【试题解析】 由 于模块通常不是独立的程序,自己不能运行,而需要其他模块调用或驱动,同时被测试模块还
44、要去调用其他模块,前者称为驱动模块,后者称为承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是代替被测模块,调用其他模块。 40 【正确答案】 调试 【试题解析】 调试程序的任务是诊断和改正程序中的错误。程序调试活动由两部分组成,一是根据错误的迹象确定程序中错误的确切性,原因和位置;二是对程序进行修改,排除这个错误。 41 【正确答案】 2 【试题解析 】 此题考查的是类中成员的默认访问权限。在默认情况下,类中数据成员和成员函数的默认访问级别为私有,所以类中的私有成员有 2个,即 i和 j。 42 【正确答案】 成员初始化列表 【试题解析
45、】 派生类是基类的具体化,而基类则是派生类的抽象。派生类也就是基类的具体实现,所以对基类数据成员的初始化是在派生类的构造函数中成员初始化列表执行的。 43 【正确答案】 x1=12,x2=2 【试题解析】 由主函数 main 入手,首先定义类 TestClass2的对象 b,成员数据为 2。然后调用 dispb函数。在 dispb中首先执行 dispa函数, TestClass2为TestClass1的派生类, “TestClass2(int i):TestClass1(i+10)”所以 TestClass1 中的x1=12, dispa输出的结果为 x1=12。在 TestClass1 中
46、x2=2,所以 dispb 中的输出语句 “cout ”x2=” x2 endl;”,输出 x2=2。即答案为 “x1=12,x2=2”。 44 【正确答案】 int tPoint:countP=0; 【试题解析】 此题考查的是类中静态数据成员的初 始化,静态数据成员初始化的一般格式:数据类型类名 :静态数据成员名 =初始值,且初始化时前面不加关键字static。分析题目,首先调用构造函数,然后输出 countP的值,所以 couatP的初始值应设置为 0,即横线处填入 int Point:countP=0;。 45 【正确答案】 MyClass() 【试题解析】 C+语言中析构函数为符号 “ ”加类名,且析构函数没有返回值。所以正确的形式应该是 MyClass()。 46 【正确答案】 A 【试题解析】 此题中,语句 Foo f3, g(3);创建对象的过程中,调用一次缺省构造函数即 Foo(),无任何输出,再调用一次带参数的构造函数 Foo(int x) cout xA