1、国家二级( C+)笔试模拟试卷 144及答案与解析 1 下列选项中,不是一个算法的基本特征是 ( )。 ( A)完整性 ( B)可行性 ( C)有穷性 ( D)拥有足够的情报 2 下列数据结构中,属于非线性的是 ( )。 ( A)线性表 ( B)队列 ( C)树 ( D)栈 3 下列叙述中错误的是 ( )。 ( A)线性表是由 n个元素组成的一个有限序列 ( B)线性表是一种线性结构 ( C)线性表的所有结点有且仅有一个前件和后件 ( D)线性表可以是空表 4 按照 “先进先出 ”组织数 据的数据结构是 ( )。 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 5 下列关于线性链表
2、的描述中正确的是 ( )。 ( A)存储空间不一定连续,且各元素的存储顺序是任意的 ( B)存储空间不一定连续,且前件元素一定存储在后件元素的前面 ( C)存储空间必须连续,且各前件元素一定存储在后件元素的前面 ( D)存储空间必须连续,且各元素的存储顺序是任意的 6 某二叉树共有 60个叶子结点与 50个度为 1的结点,则该二叉树中的总结点数为( )。 ( A) 148 ( B) 169 ( C) 182 ( D) 198 7 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)顺序存储的有序线性表 ( B)结性链表 ( C)二叉链表 ( D)有序线性链表 8 最简单的交换排序方法是
3、( )。 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 9 对于长度为 n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中,正确的是 ( )。 ( A)冒泡排序为 n/2 ( B)冒泡排序为 n ( C)快速排序为 n ( D)快速排序为 n(n-1)/2 10 结构化程序设计的三种基本结构是 ( )。 ( A)过程、子程序和分程序 ( B)顺序、选择和重复 ( C)递归、堆栈和队列 ( D)调用、返回和转移 11 运算符重载是对已有的运算符赋予多重含义,因此 ( )。 ( A)可以对基本类型 (如 int类型 )的数据,重新定义 “+”运算符的含义 ( B)可
4、以改变一个已有运算符的优先级和操作数个数 ( C)只能重载 C+中已经有的运算符,不能定义新运算符 ( D) C+中已经有的所有运算符都可以重载 12 已知类 Myst有一个只需要一个 double型 参数的构造函数,且将运算符 “-”重载为友元函数。要使语句序列 ( )。 Myst x(3.2),y (5.5),z(0.0); z=8.9-y; y=x-6.3; 能够正常运行,运算符函数 operator-应该在类中声明为 ( )。 ( A) friend Myst operator-(Myst ( B) friend Myst operator-(Myst,Myst); ( C) frie
5、nd Myst operator-(Myst,Myst ( D) friend Myst operator-(Myst 13 有如下函数模板声明: template typename T T Max(T a,T b)return(a=b)?a:b; 下列对函数模板 Max()的调用中错误的是 ( )。 ( A) Max(3.5,4.5) ( B) Max(3.5,4) ( C) Max double (3.5,4.5) ( D) Max double (3.5,4) 14 使用 ifstream流类定义流对象并打开磁盘文件时,文件的隐 含打开方式为 ( )。 ( A) ios:in ( B)
6、ios:out ( C) ios:inlios:out ( D)没有默认 15 有如下程序: #include iostream using namespace std; int main() cout.fill(*); cout.width(5); cout scientific 314.15926535 endl; return 0; 程序运行后,输出的结 果是 ( )。 ( A) 3.141593e+002 ( B) 3.1416e+002 ( C) *3.14e+002 ( D) 314.16 16 下列符号中,正确的 C+标识符是 ( )。 ( A) enum ( B) 2b ( C
7、) foo-9 ( D) _32 17 下列关于 C+函数的说明中,正确的是 ( )。 ( A)内联函数就是定义在另一个函数体内部的函数 ( B)函数体的最后一条语句必须是 return语句 ( C)标准 C+要求在调用一个函数之前,必须先声明其原型 ( D)编 译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 18 类 MyClass的定义如下: class MyClass public: MyClass( )value=0; SetVariable(int i)value=i; private: int value; ; 则对下列语句序列正确的描述是 ( )。 MyClass*P
8、, my; p= ( A)语句 p= 是把对象 my赋值给指针变量 P ( B)语 句 MyClass*p, my; 会调用两次类 MyClass的构造函数 ( C)对语句 *P. SetVariable(5)的调用是正确的 ( D)语句 p- SetVariable(5)与语句 my.SetVariable(5)等价 19 若类 A和类 B的定义如下: #include malloc.h class A int i,j; public: int geti() return i; ; class B:public A int k; public: void make() k=i*j; ; 则上
9、述定义中非法的表达式是 ( )。 ( A) k=i*j; ( B) int k; ( C) return i; ( D) void make(); 20 下列程序的输出结果为 ( )。 #include iostream.h class TestClass public: TestClass ()val+; static int val; ; int TestClass:val=0; void main() TestClass cs1; cout cs1.val “; TestClass cs2; TestClass cs3,cs4; cout cs2.val endl; ( A) 03 (
10、B) 13 ( C) 14 ( D) 24 21 静态数据成员是为 ( )的数据。 ( A)私有 ( B)保护 ( C)所有对象共享 ( D)类成员 22 下列是关于派生类声明的开始部分,其中正确的是 ( )。 ( A) class virtual B:public A ( B) virtual class B:public A ( C) class B:public A virtual ( D) class B:virtual publicA 23 有如下程序: #include iostream using namespace std; class TestClass1 public: T
11、estClass1 ()cout “ TestClass1“; TestClass1 ()cout “ TestClass1“; ; class TestClass2:public TestClass1 TestClass1 *p; public: TestClass2()cout “ TestClass2“;p=new TestClass1(); TestClass2()cout“ TestClass2“;delete p; ; int main() TestClass2 obj; return 0; ( A) TestClass2TestClass1TestClass1 TestClass
12、1 TestClass2 TestClass1 ( B) TestClass1TestClass2TestClass1 TestClass2 TestClass1 TestClass1 ( C) TestClass2TestClass1TestClass1 TestClass2 TestClass1 TestClass1 ( D) TestClass1TestClass2TestClas1 TestClass1 TestClass2 TestClass1 24 下列关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态
13、联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 25 若有如下程序: #include iostream using namespace std; class TestClass public: void who() cout “TestClass“ endl; ; class TestClass1:public TestClass public: void who()cout “TestClass1“ endl; ; int main() TestClass *p; TcstClass1 obj1; p= p- who(); re
14、turn 0; 则该程序运行后的输出结果是 ( )。 ( A) TestClass1 ( B) TestClass ( C) 0 ( D)无输出 26 下列有关继承和派生的叙述中,正确的是 ( )。 ( A)如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员 ( B)派生类的成员函数可以访问基类的所有成员 ( C)基类对象可以赋值给派生类对象 ( D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 27 若 有如下程序: #include iostream using namespace std; class TestClass1 private: int a;
15、public: TestClass1(int i) a=i; void disp() cout a “,“; ; class TestClass2 private: int b; public: TestClass2(int j) b=j; void disp() cout b “,“; ; class TestClass3:public TestClass2,public TestClass1 private: int c; public: TestClass3(int k):TestClass1(k-2),TestClass2(k+2) c=k; void disp() TestClass
16、1:disp(); TestClass2:disp(); cout c endl; ; int main() TestClass3 obi(10); obj.disp(); return 0; 程序执行后的输出结果是 ( )。 ( A) 10, 10, 10 ( B) 10, 12, 14 ( C) 8, 10, 12 ( D) 8, 12, 10 28 在下列 程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD。 #include iostream using namespace std; class A public:A()coutA; ; class B: _ public:
17、B()cout B; ; class C:virtual public A public:C()cout C; ; class D:public B,public C public:D()cout D; ; void main()D obj; ( A) public A ( B) private A ( C) protected A ( D) virtual public A 29 用来派生新类的类称为 ( )。 ( A)新生类 ( B)派生类 ( C)基类 ( D)子类 30 有如下程序; #include iostream using namespace std; class DA int
18、 k; public: DA(int x=1):k (x) DA( )cout k; ; int main( ) DA d=DA(3),DA(3),DA(3); DA *p=new DA2; delete p; return (); 这个程序的输出结果是 ( )。 ( A) 111 ( B) 333 ( C) 11333 ( D) 11133 31 如果派生类以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是 ( )。 ( A) public和 public ( B) public和 protected ( C) protect
19、ed和 public ( D) protected和 protected 32 必须用一对大括号括起来的程序段是 ( )。 ( A) switch语句中的 case标号语句 ( B) if语句的分支 ( C)循环语句的循环体 ( D)函数的函数体 33 有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x):val(x) void Print() const cout“const:val=“ val t; void Print() cout “val=“ val t; private:
20、 int val; ; int main() const MyClass obj1(10); MyClass obi2(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 34 有如下程序: #include iostream using namespace std; class Part public: Part(int x=0):va
21、l(x) cout val; 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 0; 程序的输出结果是 ( )。 ( A) 123321 ( B) 213312 ( C) 213 ( D) 123123 35 下列有关类成员的叙述中,正确的是 ( )。 (
22、 A)友元函数是类的成员函数 ( B)类成员的默认访问权限是私有的 ( C)类成员函数必须声明为公有的 ( D)类的静态数据成员不能是常成员 36 在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 _实际上对应一个处理模块。 37 结构化程序设计的三种基本结构分别是顺序、选择和 _。 38 二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是_。 39 一个模块直接调用 的其他模块个数称为 _。 40 数据库系统中实现各种数据管理功能的核心软件是 _。 41 下面程序的输出结果为【 】。 #include iostream using namespace
23、 std; void initialize(int printNo, int state=0); void initialize(iht printNo= 1,int state); int main() initialize(); return 0; void initialize(int printNo, int state) cout printNo “,“ state end1; 42 语句 cout setiosflags(ios:showpos) 38 “ -38 end1;的输出结果为【 】。 43 友元类的所有成员函数都是另一个类的【 】函数。 44 虚函数必须是类的【 】。
24、45 类 ostream的成员函数【 】用于执行无格式输出,成员函 数 put用于输出单个字符。 46 C+本身没有定义 I/O操作,但 I/O操作包含在 C+实现中。 C+标准库iostream提供了基本的 I/O类。 I/O操作分别由类 istream和【 】提供。 47 阅读下面程序: #include iostream.h int fun2(int m) if(m%3=0) return 1; else return 0; void fun1(int m, int for (i=1; i m; i+) if(fun2(i) S=S*i; void main() int n=9, s=2
25、; fun1(n, s); cout s end1; 该程序的运行结果是【 】。 48 有如下程序: #include iostream using namespace std; class PARENT public: PARENT() cout “PARENT“; ; class SON: public PARENT public: SON() cout “SON“; ; int main() SON son; PARENT *p; p= return 0; 执行上面程序的输出是【 】。 49 虚基类说明格式如下: slass派生类名【 】继承方式基类名。 50 下面程序的执行结果是【 】
26、。 #include iostream.h void main() int n=0,x=0; do n+; if(n%3=2 while(x!=1); cout “n=“ n end1; 国家二级( C+)笔试模拟试卷 144答案与解析 1 【正确答案】 A 【试题解析】 作为一个算法,一般应该具有 4个特征: 可行性,即考虑到实际的条件能够达到一个满意的结果; 确定性, 算法中第一个步骤都必须是有明确定义的; 有穷性,一个算法必须在有取的时间内做完; 拥有足够的情报。 2 【正确答案】 C 【试题解析】 线性结构是指数据元素只有一个直接前件元素和直接后件元素,线性表是线性结构。栈和队列是指对
27、插入和删除操作有特殊要求的线性表,树是非线性结构。 3 【正确答案】 C 【试题解析】 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C) 是错误 的。 4 【正确答案】 A 【试题解析】 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫 “队尾 ”,删除元素的一端叫 “队头 ”,先插入的元素先被删除,是按 “先进先出 ”的原则组织数据的。 5 【正确答案】 A 【试题解析】 线性表的链式存储结构中的结点空间是动态生成的,它们在内存
28、中的地址可能是连续的,也可能是不连续的。 6 【正确答案】 B 【试题解析】 叶子结点总是比度为 2的结点多一个。所以,具有 60个叶子结点的二叉树有 59个度为 2的结点。 总结点数 =60个叶子结点 +59个度为 2的结点 +50个度为 1的结点 =169个结点。 7 【正确答案】 A 【试题解析】 二分法查拽只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。 8 【正确答案】 D 【试题解析】 所谓的交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线
29、性表变成有序。 9 【正确答案】 D 【试题解析】 在最坏情况下,冒泡 排序和快速排序的比较次数都是 n (n-1)/2。 10 【正确答案】 B 【试题解析】 程序的 3种基本控制结构包括顺序、选择和重复 (循环 ),这 3种结构就足以表达出各种其他形式的结构。 11 【正确答案】 C 【试题解析】 此题考查的是运算符的有关概念。运算符重载是针对 C+原有运算符进行的,不能通过重载创造新的运算符;除了 “.”、 “.*”、 “- *”、 “:”、 “?:”这5个运算符之外,其他运算符都可以重载。运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构 。 12 【正确
30、答案】 B 【试题解析】 此题需要注意的是,运算符重载函数的两个参数,应该是类 Myst的对象,而不是引用,所以正确的声明语句是 friend Myst operator- (Myst,Myst);。 13 【正确答案】 B 【试题解析】 选项 B)中两个实参的实际类型不同而未进行转换,会出现错误。 14 【正确答案】 D 【试题解析】 使用 ifstxeam流类定义流对象并打开磁盘文件时,文件没有默认的打开方式。其中 ios:in是为输入而打开; iso:out是为输 出而打开。 15 【正确答案】 A 【试题解析】 cout.fill()用于设置或返回输出的填充字符,默认是空格, fill
31、()函数的设置一直有效,直到下一个 fill()函数改变该值为止。 cout.width()用于设置或返回 (不带参数 )输出数据的字段宽度,此函数的设置只对下一个输出有效。 16 【正确答案】 D 【试题解析】 此题考查的是标识符。标识符是由数字、字母以及下划线构成,其中第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31个 字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字,选项 A)错误。符合这些要求的只有选项D)。 17 【正确答案】 C 【试题解析】 选项 A)中,内联函数不是定义在另一个函数体内部的函数,而是将
32、incline放在函数定义中函数类型之前;函数体的最后一条语句可以是任意的语句,选项 B)错误;编译器不会根据函数返回值的类型来区分重载形式,选项 D)错误。标准 C+要求在调用一个函数之前,必须先声明其原型,所以选项 C)正确。 18 【正确答案】 D 【试题解析】 选项 A),语句 p=,由于 p只是一个指向对象的指针,因此定义指针 p不调用构造函数,所以此语句只调用一次构造函数;对成员函数的引用可以通过两种形式:指针 -成员函数 (形参表 )或者对象名成语函数名 (形参表 ),故选项 C)错误,选项 D)正确。 19 【正确答案】 A 【试题解析】 因为派生类不是基类的私有成员 i和 j
33、(默认情况下,成员的属性为私有 ),所以表达式 k=i*j是非法的。其余的访问权限都是许可的。 20 【正确答案】 C 【试题解析】 由主函数 main入手,定义 TestClass类的对象 cs1,执行 cs1.val,其中 val为静态变量,根据 “int TestClass:val=0;”初始化, TestClass中的TestClass()val+;)构造函数执行后, val值为 1。主函数中接着定义对象 cs2,cs3, cs4。执行 “cout cs2.val endl;”中的 val值为 4,所以输出为 14。 21 【正确答案】 C 【试题解析】 静态数成员是一种特殊的数据成员
34、。静态数据成员不属于某一个对象,在为对象 所分配的空间中不包括静态数据成员所占的空间。所有对象共享这些静态数据成员,都可以引用它。 22 【正确答案】 D 【试题解析】 声明派生类的一般形式: class派生类名: 继承方式 基类名。其中继承方式包括 public, private, protected。所以选项 A),选项 B)错误。而 virtual为 C+中的关键字,所以选项 C)错。虚函数的使用方法是在基类用 virtual声明成员函数为虚函数。 23 【正确答案】 B 【试题解析】 派生类中构造函数的执行顺序是:先调用基类构造函数,对基 类数据成员初始化,然后调用子对象构造函数,对子
35、对象数据成员初始化;最后执行派生类构造函数本身,对派生类数据成员初始化。由主函数 mian入手,首先定义了一个 TestClass2对象 obj。其中 TestClass2公共继承 TestClass1,对象 obi可以访问 TestClass1中的公有成员函数。 TestClass2中定义了一个 TestClass1的指针p,给 p分配新空间,即指向类 TastClass1,输出 “TestClass1”。在 TestClass2的构造函数中首先输出 “TestClass2”,并在 TestClass1构造函数中输出“TestClass1”。 TestClass2析构函数中输出 “ Test
36、Class2”,删除指针 p,输出 “TestClass1”。析构 TestClass1输出 “ TestClass1”。 24 【正确答案】 D 【试题解析】 构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。 25 【正确答案】 A 【试题解析】 程序中的 TestClas1为 TestClass的派生 类,主函数 main中定义TestClass对象 *p, TestClass1对象 obj1,然后 p引用 obj1,执行 p- who ()则是调用基类中的 who函数,输出 TcstClass。
37、 26 【正确答案】 D 【试题解析】 如果派生类私有继承基类,不能访问基类中的私有成员,所以选项A)、 B)是错误的。派生类是对基类的具体化,所以选项 C)错误。如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类,即选择选项 D)。 27 【正确答案】 D 【试题解析】 由主函数 mian入手,首先定义 TestClass3的对象 obj,参数为10。其中 TestClass3为 TestClass1和 TestClass2的派生类。然后调用 disp成员函数。 Disp中首先执行 “TestClass1:disp();”,然后执行 “TestClass2:disp();”,最后执
38、行输出语句 “cout c endl;”。 TestClass1(k-2),所以第一个输出 8,TestClass2(k+2),第二个输出 12,最后一个本类中的输出即为 10。 28 【正确答案】 D 【试题解析】 由主函数 mian入手,定 义了类 D对象 obj。其中 D为类 B和 C的公有继承, A是 C的虚基类。题目中要求的输出结果为 “ABCD”,依次为类 A,类 B,类 C,类 D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证 A只被继承一次,输出一个 A,所以不但需要声明 A为 C的虚基类,同样也要声明 A为 B的虚基类。 29 【正确答案】 C 【试题解
39、析】 此题考查的是继承与派生的概念。用来派生新类的类称为基类,而派生出来的新类称为它的子类或派生类。 30 【正确答案】 C 【试题解析】 此题考查的是析构函数和对象的生存期 。在主函数中,首先定义了一个 DA类对象数组 d,从初始化列表中可以看出,它包含 3个对象;然后通过new运算符动态创建了一个 DA类的对象数组,并将首地址赋给 DA类指针 p;接着通过 delete运算符销毁指针 p所指向的数组,故此时会输出 “11”。最后函数结束,销毁前面定义的对象数组 d,会输出 “333”。故最后的输出结果是 11333。 31 【正确答案】 D 【试题解析】 此题考查的是基类成员在派生类中的访
40、问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公 有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。 32 【正确答案】 D 【试题解析】 此题考查的是语句块和函数。 if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来; switch语句中的 case标号语句可以是一系列语句,也可以包含语句块,也不是必须用
41、一对大括 号括起来;函数的函数体必须用一对大括号括起来。 33 【正确答案】 C 【试题解析】 此题考查的是常成员函数的重载。常成员函数是使用 const关键字说明的函数。 COHM关键字可用于区分重载函数。此时,常对象调用常成员函数,一般对象调用一般成员函数;题目中的 Print()就是通过 const重载的两个成员函数,主函数中声明的。 obj1是常对象, obj2是一般对象。故输出结果是const:val=10 val=20。 34 【正确答案】 B 【试题解析】 此题考查的是类的构造与析构。在建立 类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明
42、的顺序(自左向右 ),接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析构顺序与之相反。本题中, Whole类中有两个 Part类的成员 p1和 p2,根据它们定义的顺序,先构造 p1再构造 p2。所以,首先被构造的是 p1(y),输出 2;第二个被构造的是 p2(x),输出 1;最后调用析构函数,输出 val的值 3;析构函数调用顺序与构造函数相反。故最后输出213312。 35 【正确答案】 B 【试题解析】 此题考查的是类成员的有关概念。类的友元函数可以直接访问该类的所有成员,但它不是类的成员函数,故选项 A)错误;类成员函数的访问权限可以声
43、明为公有、保护、私有,故选项 C)错误;静态数据成员的声明是使用关键字static,它可以是常成员,故选项 D)错误。 36 【正确答案】 加工 【试题解析】 数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程,其中的每一个加工对应一个处理模块。 37 【正确答案】 重复 (或循环 ) 【试题解析】 结构化程序设计包括 3种基本的结构:顺序结构、选择结构和重复结构 (循环结构 )。利用这 3种结构就足以表达出各种其他结构形式的程序设计方法,其中利用循环结构,可以简化大量的程序执行。 38 【正确答案】 顺序存储 (或顺序方式存储 ) 【试题解析】 二分法查找对表的要求是有
44、序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。 39 【正确答案】 扇出 【试题解析】 在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。 40 【正确答案】 数据库管理系统 【试 题解析】 数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。 41 【正确答案】 1, 0 42 【正确答案】 +37-38 43 【正确答案】 友元 44 【正确答案】 成员函数 45 【正确答案】 write 46 【正确答案】 ostream 47 【正确答案】 36 48 【正确答案】 PARENTSON 49 【正确答案】 virtual 50 【正确答案】 n=23