1、国家二级( C+)机试模拟试卷 180及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性 2 下列叙述中正确的是 ( )。 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都 是非线性结构 ( D)以上三种说法都不对 3 软件测试的目的是 ( )。 ( A)评估软件可靠性 (
2、B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)软件集成测试计划 ( B)软件详细设计说明书 ( C)用户手册 ( D)软件需求规格说明书 5 软件生命周期是指 ( )。 ( A)软件产品从提出、实现、使用维护到停止使用退役的过程 ( B)软件从需求分析、设计、实现到测试完成的过程 ( C)软件的开发过程 ( D)软件的运行维护过程 6 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性和
3、操作的机制 7 层次型、网状型和关系型数据库划分原则是 ( )。 ( A)记录长度 ( B)文件的大小 ( C)联系的复杂程度 ( D)数据之间的联系方式 8 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对多 ( D)多对一 9 数据库设计中反映用户对数据要求的模式是 ( )。 ( A)内模式 ( B)概念模式 ( C)外模式 ( D)设计模式 10 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)差 ( C)交 ( D)并 1
4、1 下列符号中能够作为 C标识符的是 ( )。 ( A) const ( B) 2a ( C) _shape ( D) _count 12 已知枚举类型声明语句为: enum COLORWHITE, YELLOW, GREEN 5, RED, BLACK 10; 则下列说法中错误的是 ( )。 ( A)枚举常量 YELLOW的值为 1 ( B)枚举常量 RED的值为 6 ( C)枚举常量 BLACK的值为 10 ( D)枚举常量 WHITE的值为 1 13 执行下列语句段后,输出字符 “*”的个数是 ( )。 for(int i 50; i 1; i 2) cout *: ( A) 24 (
5、B) 25 ( C) 26 ( D) 50 14 有如下定义: int a5 1, 3, 5, 7, 9, *p a; 下列表达式中不能得到数值 5的是 ( )。 ( A) a2 ( B) a3 ( C) *c(p 2) ( D) *p 4 15 下列语句中错误的是 ( )。 ( A) const int a; ( B) const int a 10; ( C) const int * point 0; ( D) const int * point new int(10); 16 已知函数 FA调用函数 FB,若要把这两个函数定义在同一个文件中,则 ( )。 ( A) FA必须定义在 FB之前
6、 ( B) FB必须定义在 FA之前 ( C)若 FA定义在 FB之后,则 FA的原型必须出现在 FB的定义之前 ( D)若 FB定义在 FA之后,则 FB的原型必须出现在 FA的定义之前 17 下列关于运算符函数的描述中,错误的是 ( )。 ( A)运算符函数的名称总是以 operator为前缀 ( B)运算符函数的参数可以是对象 ( C)运算符函数只能定义为类的成员函数 ( D)在表达式中使用重载的运算符相当于调用运算符重载函数 18 为了提高函数调用的实际运行速度,可以将较简单 的函数定义为 ( )。 ( A)内联函数 ( B)重载函数 ( C)递归函数 ( D)函数模板 19 若要对
7、Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 ( A) Data (Data); ( B) Data operator (Data); ( C) Data operator(Data); ( D) operator (Data, Data); 20 已知函数 f的原型是 void f(int * a, long b);变量 v1、 v2的定义是: int v1; long v2; 下列调用语句中正确的是 ( )。 ( A) f(v1, &v2); ( B) f(v1, v2); ( C) f(&v1, &v2); ( D) f(&v1, v2); 21 已知 Val
8、ue是一个类, value是 Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是 ( )。 ( A) Value operator (Value v, int i); ( B) Value operator (Value v valUe, int i); ( C) Value operator (Value v, int i 0); ( D) Value operator (Value v value, int i 0); 22 下列关于运算符重载的描述中,正确的是 ( )。 ( A)运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符 ( B)一元运算符只能作
9、为成员函数重载 ( C)二元运算符重载为非成员函数时,参数表中有一个参数 ( D) C中可以重载所有的运算符 23 下列有关类成员的叙述中,正确的是 ( )。 ( A)友元函数是类的成员函数 ( B)类成员的默认访问权限是 私有的 ( C)类成员函数必须声明为公有的 ( D)类的静态数据成员不能是常成员 24 有如下类定义: class Point private: static int how_many; ; _how_many 0; 要初始化 Point类的静态成员 how_many,下画线处应填入的内容是 ( )。 ( A) int ( B) static int ( C) int Po
10、int ( D) static int Point 25 有如下头文件: int f1( ); static int t2( ); class MA public: int t3( ); static int f4( ); ; 在所描述的函数中,具有隐含的 this指针的是 ( )。 ( A) f1 ( B) f2 ( C) f3 ( D) f4 26 下列有关类继承的叙述中,错误的是 ( )。 ( A)继承可以实现软件复用 ( B)虚基类可以解决由多继承产生的二义性问题 ( C)派生类构 造函数要负责调用基类的构造函数 ( D)派生类没有继承基类的私有成员 27 在下列关键字中,不能用来表示
11、继承方式的是 ( )。 ( A) private ( B) static ( C) public ( D) protected 28 有如下两个类定义: class XX private: double x1; proteeted: double x2; public: double x3; ; class yy: protected XX private: double y1; protected: double y2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 29 有如下类定义: clas
12、s MyClass int value; public: MyClass(int n): value(n) int getValue()eonst return value; ; 则类 MyClass的构造函数的个数是 ( )。 ( A) 1个 ( B) 2个 ( C) 3个 ( D) 4个 30 有如下类和对象的定义: class Constants public: statie double getPI( ) return 3 1416; ; Constants constants; 下列各组语句中,能输出 3 1416的是 ( )。 ( A) cout constants getPI(
13、);和 cout Constants getPI( ); ( B) cout constants getPI( );和 cout Constants getPI( ); ( C) cout constants getPI( );和 cout Constants getPI( ); ( D) cout constants getPI( );和 cout Constants getPI( ); 31 有如下程序: #include iostream using namespaee std; chtss VAC public: int f( ) constreturn 3; int f( ) ret
14、urn 5; ; int main( ) VAC v1; const VAC v2; eoHt v1 f() v2 f(); return 0; 执行这个程序的输出结果是 ( )。 ( A) 53 ( B) 35 ( C) 55 ( D) 33 32 有如下程序: #inelilde lostream using namespace std; class MyClass public: MyClass(int i 0)cout 1; MyClaSS(const MyClass&x)cout 2; MyClass& operator (const MyClass&x) cout 3; retur
15、n, *this; MyClass()cout 4; ; int main() MyClass obj1(1), obj2(2), obj3(obj1); return 0; 执行这个程序的输出结果是 ( )。 ( A) 112444 ( B) 11114444 ( C) 121444 ( D) 11314444 33 有如下类声明: class Base protected: int amount; public: Base(int n 0): amount(n) int getAmount( )const return amount; ; class Derived: public Bas
16、e protected: int value; public: Derived(int m, int n): value(m), Base(n) int getData()constreturn value amount; ; 已知 x是一个 Derived对象,则下列表达式中正确的是 ( )。 ( A) x value x getAmount( ) ( B) x getData( ) x getAmount( ) ( C) x getData( ) x amount ( D) x value x amount 34 有如下程序: #include iostream using namespa
17、ce std; class AA int k; protected: int n; void setK(int k)this k k; public: void setN(int n)this n n; ; class BB: public AA *类体略 * ; int main( ) BB x; x n 1; 1 x setN(2); 2 x k 3: 3 x setK(4); 4 return 0; 在标注号码的四条语句中正确的是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 35 有如下程序: #include iostream using namespace st
18、d; class Base int x; public: Base(int n 0): x(n)cout n; int getX( )constreturn x; ; class Derived: public Base int y; public: Derived(int m, int n): y(m), Base(n)cout m; Derived(int m): y(m)cout m; ; int main( ) Derived d1(3), d2(5, 7); return 0; 执行这个程序的输出结果是 ( )。 ( A) 375 ( B) 357 ( C) 0375 ( D) 03
19、57 36 有如下程序: #include iostream using namespace std; class GA public: virtual int f( ) return 1; ; class GB: public GA public: virtual int f( ) return 2; ; void show(GA g)cout g f(); void display(GA&g) cout g f( ); int main( ) GA a; show(a); display(a); GB b: show(b): display(b); return 0; 执行这个程序的输出结
20、果是 ( )。 ( A) 1111 ( B) 1211 ( C) 1112 ( D) 1212 37 下列有关模板的叙述中,正确的是 ( )。 ( A)函数模板不能含有常规形参 ( B)函数模板的一个实例就是一个函数定义 ( C)类模板的成员函数不能是模板函数 ( D)用类模板定义对象时,绝对不能省略模板实参 38 下面是一个模板声明的开始部分: template typename T double 由此可知 ( )。 ( A)这可能是一个函数模板的声明 ( B)这可能是一个类模板的声明 ( C)这既可能是一个函数模板的声明,也可能是一个类模板的声明 ( D)这肯定是一个错误的模板声明 39
21、C系统预定义了 4个用于标准数据流的对象,下列选项中不属于此类对象的是 ( )。 ( A) cout ( B) cin ( C) cerr ( D) cset 40 下列语句都是程序运行时的第 1条输出语句,其中一条语句的输出效果与其 他三条语句不同,该语句是 ( )。 ( A) cout interna1 12345; ( B) tout left 12345; ( C) cout right 12345; ( D) cout setw(6) 12345; 二、基本操作题 41 使用 VC6打开考生文件夹下的 proj1工程目录内的 proj1 dsw文件,其中在编辑窗口内显示的主程序文件中
22、定义有 Xabc类和主函数 main。在程序文本中位于每行 “ ERROR*found*下面的一一行有错 误,请加以更正。 更正后程序的输出为: 57 注意:只允许修改每个 “ ERROR*found*下面的一行语句,不允许改动程序中的其他任何内容。 #include iostream using namespace std; class Xabc int*a; int n; public: Xabc(int aa, int nn): n(an) a new intn; for(int i=0; in; i+) ERROR*found* aai ai; int GetA(int i)const
23、return ai; int SumA(int n); Xabc( )delete a; ; int Xabc SumA(int n) int s 0; for(int j 0; j n; j )s aj; return s; int main( ); int a6 2, 5, 8, 3, 6, 9; Xabc x(a, 6); a3 19; int d 0; for(int i 0; i 6; i ) ERROR*found* d x ai; ERROR*found* int f SumA(5); cout d f end1: return 0; 三、简单应用题 42 请使用 VC6或使用【
24、答题】菜单 打开考生文件夹 proj2下的工程 proj2,其中有矩阵基类 MatrixBase、矩阵类 Matrix和单位阵 UnitMatrix的定义,还有 main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 #include iostre
25、am using namespace std; 矩阵基础类,一个抽象类 class MatrixBase int rows, cols; public: MatrixBase(int rows, int cols): rows(rOWS), cols(cols) int getRows()const return rows; 矩阵行数 int getCols()const return cols; 矩阵列数 virtual double getElement(int r, int c)const 0;取第 i个元素的值 void show()const分行显示矩阵中所有元素 for(int i
26、 0; i rows; i ) cout end1: for(int j 0; j cols; j ) *found* cout _ “ “; ; 矩阵类 class Matrix: public MatrixBase double * val: public: *found* Matrix(int rows, int cols, double m NULL): _ *found* val _; for(int i 0; i rows * cols; i ) vali (m NULL?0 0: mi); Matrix()deleteval; double getElement(int r, i
27、nt c)const return valr*getCols() c; ; 单位阵 (主对角线元素都是 1,其余元素都是 0的方阵 )类 class UnitMatrix: public MatrixBase public: UnitMatrix(int rows): MatrixBase(rows, rows) 单位阵行数列数相同 double getElement(int r, int c)const *found* if(_)return 1 0; return 0 0; ; int main() MatrixBase * m; double d5 1, 2, 3, 4, 5, 2, 3
28、, 4, 5, 6, 3, 4, 5, 6, 7; m new Matrix(3, 5, (double *)d); m show(); delete m; cout end1; m new UnitMatrix(6); m show(); delete m; return 0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 DataList类,是一个用于表示数据表的类。 sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个 sort函数。程序的正确输出应为: 排序前: 7, 1, 3, 11, 6, 9, 12,
29、 10, 8, 4, 5, 2 排序后: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1 1, 12 要求: 补充编制的内容写在 “*333*”与 “*666*”两 行之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为 obj文件,并且在本程序调用。 DataList h #include iostream using namespace std; class DataList数据表类 int len; double * d; public: DataList(int len, double data
30、NULL); DataList()delete d, int length( )constreturn len; 数据表长度 (即数据元素的个数 ) double getElement(int i)constreturn di; void sort( );数据表排序 void show( )eonst;显示数据表 ; void writeToFile(char * , const DataList&); main cpp #include“DataList h“ DataList DataList(int len, double data): len(len) d new doublelen;
31、 for(int i 0; i len; i ) di (data NULL?0 0: datai); void DataList sort()数据表排序 *333* *666* void DataList show()const显示数据表 for(int i 0; i len 1; i )cout di “, “; cout dlen 1 end1; int main() double s 7, 1, 3, 11, 6, 9, 12, 10, 8, 4, 5, 2; DataList list(12, s); cout “排序前: “; list show(); list sort(); c
32、out end1 “排序后: “; list show(); writeToFile(“ “, list); return 0; 国家二级( C+)机试模拟试卷 180答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。 2 【正确答案】 D 【试题解析】 栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。 3 【正确答案】 D 【试题解析】 软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误
33、。 4 【正确答案】 D 【试题解析】 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择 D。 5 【正确答案】 A 【试题解析】 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都 属于软件生命周期。 6 【正确答案】 D 【试题解析】 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 7 【正确答案】
34、D 【试题解析】 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。 8 【正确答案】 C 【试题解析】 因为一个人可以 操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是名对多的关系。 9 【正确答案】 C 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择 C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方
35、法。 10 【正确答案】 B 【试题解析】 关系 T中的元组是 R关系中有而 S关系中没有的元组的集合,所以进行的 是差的运算。 11 【正确答案】 C 【试题解析】 本题考查 C标识符的命名规则,其规则有如下几点: 所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头; 所有标识符不能使用 C已有的关键字; 大、小写字母表示不同意义,即代表不同的标识符。选项 A是关键字,选项 B不能以数字开头,选项 D包含了字符 “ “,且不能以此字符开头。故答案为 C。 12 【正确答案】 D 【试题解析】 C语言规定枚举常量的默认值依次等于 0, 1, , n 1。也可以给枚举常量赋初值,方
36、法是:在枚举常量 的后面跟上 “整型常量 ”,在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为 D。 13 【正确答案】 B 【试题解析】 本题考查 for循环语句,题目中每执行完循环体后, i都会减 2,那么只有 50到 2之间的偶数才能输出 “术 ”,所以总共输出 25次。 14 【正确答案】 B 【试题解析】 本题考查指向数组的指针,本题中指针变量 p指向数组 a,直接使用数组下标即可取值,数组下标是从 0开始标号的,所以 a2能取到 5,而 a3取不到 5, C选项中使用指针后移方法能够取到 5, D选项中 *p为 1,
37、所以 *p 4为5。 15 【正确答案】 A 【试题解析】 const是一个 C语言的关键字,它限定一个变量不允许被改变。使用 const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。 A选项没有初始化, B、 C、 D选项都正确。 16 【正确答案】 D 【试题解析】 如果使用用户自己定义的函数,而该函数与调用它的函数 (即主调用函数 )在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数 作声明。 17 【正确答案】 C 【试题解析】 运算符函数可以定义为类的友元函数。所以 C选项错误。 18 【正确答案】 A 【试题解析】 一般函
38、数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。 19 【正确答案】 B 【试题解析】 根据重载加法运算符的格式,只有 B选项正确。 20 【正确答案】 D 【试题解析】 函数参数的 3种传递方式: 将变量名作为形参和实参,即传值方式; 传递变量指针; 引用形参。本题中函数 f的第一个形参为指针,那么调用f函数时,第一个参数必须是地址,所以必须是 &vl,第二个形参为引用,所以对应实参为 v2即可。故本题答案为 D。 21
39、【正确答案】 A 【试题解析】 本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为 A。 22 【正确答案】 A 【试题解析】 运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可 以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。 C有 5个运算符不能重载,它们是: (成员访问运算符 )、 *(成员指针访问运算符 )、 (域运算符 )、 sizeof(长度运算符 )和 ?: (条件运算符 )。故本题答案为 A。 23 【正确答案】 B 【试题解析】 友元函数是指某些虽然不是类成员却能访问
40、类的所有成员的函数,故友元函数不是类的成员函数。类成员的默认访问权限是私有的,类的成员函数可以是 3种权限中的一种,静态数据成员可以为常成员。故本题答案为 B。 24 【正确答案】 C 【试题解析】 本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外进行初始化,其一般形式为:数据类型类名 静态数据成员名初值。所以本题答案为 C。 25 【正确答案】 C 【试题解析】 只有类的非静态成员函数才隐含 this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上 this。所以本题答案为 C。 26 【正
41、确答案】 D 【试题解析】 3种继承方式中,派生 类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。 27 【正确答案】 B 【试题解析】 3种继承方式:公用继承、私有继承和保护继承分别使用:public、 private和 protected3个关键字来定义。 28 【正确答案】 C 【试题解析】 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员 )(2、 x3变成了保护成员,派生类中的 y2也是保护成员,所以共有 3个保护成员。本题答案为 C。 29 【正确答案】 B 【试题解析】
42、 本题考查类的默认构造函数和自定义的构造函数。本题中MyClass(int n): value(n) 为自定义的构造函数,加上默认构造函数,一共有 2个构造函数。 30 【正确答案】 D 【试题解析】 本题考查静态成员函数。静态成员函数由于没有 this指针,所以不能访问本类中的非静态成员。引用静态成员函数有 2种方式,一种是直接使用类来引用,即 Constants getPI( );另一种是使用对象来引用,即constants getPI( )。所 以本题答案为 D。 31 【正确答案】 A 【试题解析】 本题考查常对象及常成员函数及构造函数,常对象只能调用常成员函数,所以本题中,对象 v1
43、为普通对象,执行 v1 f( )后,会执行默认构造函数,输出 5,对象 v2为常对象,执行 v2 f( )后,会执行常构造函数,输出 3。 32 【正确答案】 A 【试题解析】 本题考查构造函数和复制构造函数以及重载运算符。本题中先后定义了两个对象 obj1, obj2,依次输出 11,然后定义了对象 obj3,调用复制构造函数,输出 2,最后执行三次析构函数,输出 444。 33 【正确答案】 B 【试题解析】 本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,派生类对象只能私有成员。题中 足派生类的对象,只能访问基类中公有的Base( )和 getAmount( )成员,而不能访
44、问保护类型的 amount成员,故选项 C、 D错误。而类对象对类成员的访问也存在类似的情况,即类对象只能访问类的公有成员,而 value是 Derived的保护成员,所以 A选项也错误。故答案为 B。 34 【正确答案】 B 【试题解析】 k是 private,对派生类 BB不可见, 3错误; n、 setK是protected,在派生类 BB中是 protected,对派生类 BB的对象不可见, 1, 4错误; setN是 public,在派生类 BB中是 public,对派生类 BB的对象可见, 2正确;故本题答案为 B选项。 35 【正确答案】 C 【试题解析】 本题考查派生类的构造函
45、数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象 d1,先执行基类的构造函数输出 0,再执行派生类的构 造函数输出 3,然后定义了一个对象d2(5, 7),其中需要调用基类的构造函数输出 7,最后输出 5,所以答案为 C。 36 【正确答案】 C 【试题解析】 本题主要考察虚函数。虚函数指在某基类中声明为 virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类 GA的对象 a,执行show(a)、 display(a),输出 11,定义了类 GB的对象 b,执
46、行 show(b),仍然输出1, display(b)执行会调用派生类的 f函数,因为 f函数为虚函数,输出 2,所以本题答案为 C。 37 【正确答案】 B 【试题解析】 本题考查函数模板和类模板的基础知识,所以本题答案为 B。 38 【正确答案】 A 【试题解析】 本题考查函数模板和类模板的基础知识,从 template typename T double这里就可以看出这是一个函数模板的声明。 39 【正确答案】 D 【试题解析】 C标准数据流的对象分别是 cout、 cin、 cerr、 clog,所以本题答案为 D。 40 【正确答案】 D 【试题解析】 本题考查控制输出格式, A、 B、 C选项都会输出 “1234 5”,只有D选项输 出 “12345”,所以本题答案为 D。 二、基本操作题 41 【正确答案】 (1)ai aai; (2)d x GetA(i); (3)int f x SumA(5); 【试题解析】 (1)Xabc的构造函数需要使用形参 aa为成员指针 a赋值,函数体中,首先动态分配 n个连续的整型变量的内存空
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1