1、国家二级( C+)机试模拟试卷 181及答案与解析 一、选择题 1 设数据结构 B (D, R),其中 D: a, b, c, d, e, f R: (f, A), (d, B), (e, D), (e, e), (a, C) 该数据结构为 ( )。 ( A)线性结构 ( B)循环队列 ( C)循环链表 ( D)非线性结构 2 下列叙述中错误的是 ( )。 ( A)循环队列空的条件是队头指针与队尾指针相同 ( B)若二叉树没有叶子结点,则为空二叉树 ( C)带链栈的栈底指针是随栈的操作而动态变化 的 ( D)若带链队列中只有一个元素,则队头指针与队尾指针必定相同 3 某带链栈的初始状态为 to
2、p bottom NULL,经过一系列正常的入栈与退栈操作后, top bottom 20。该栈中的元素个数为 ( )。 ( A) 1 ( B) 0 ( C) 20 ( D)不确定 4 设一棵度为 3的树,其中度为 2, 1, 0的结点数分别为 3, 1, 6。该树中度为 3的结点数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)不可能有这样的树 5 下面描述错误的是 ( )。 ( A)模块的独立性与模 块的信息隐蔽和局部化无关 ( B)内聚性和耦合性是模块独立程度的定性度量标准 ( C)一个模块的内聚性越高则该模块的独立性越强 ( D)一个模块的耦合性越高则该模块的独立性越弱
3、 6 下面属于黑盒测试方法的是 ( )。 ( A)错误推测法 ( B)基本路径测试 ( C)判定覆盖 ( D)条件覆盖 7 下面模型中为概念模型的是 ( )。 ( A)实体一联系模 ( B)层次模型 ( C)关系模型 ( D)网状模型 8 学生关系模式中有 D(D#, Dn, D1, DAddr)(其属性分别为系编号、系名 称、系主任和系地址 )和 S(S#, Sn, SG, Date, Maj, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号 )两个关系,关系 S的主键 (码 )是 S#,关系 S的外键(码 )是 ( )。 ( A) D# ( B) Maj ( C) D1 (
4、D) Dn 9 关系的实体完整性要求关系中不能为空的属性是 ( )。 ( A)主键属性 ( B)外键属性 ( C)全部属性 ( D)候选键属性 10 学生选修课程的关系模式为 Sc(S#, Sn, Sd, Sa, C#, G)(其属性分别为学号、姓名、所在系、年龄、课程 号和成绩 ); C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课 )。关系模式中包含对主属性部分依赖的是 ( )。 ( A) S#Sd ( B) (S#, C#)G ( C) C#Cn ( D) C#P# 11 已知类 X中一个成员函数的原型声明为 “void Copy(X& r); ”,则下列选项中,解释正确的
5、是 ( )。 ( A) r为指向类 X的指针 ( B) r的地址值赋值给了变量 Copy ( C)变量 X与 r按位与的结果作为函数 Copy的参数 ( D) r是类 X的对象引用,用来作为函数 Copy的形参 12 下列字符串中不能作为 C标识符使用的是 ( )。 ( A) IN25 ( B) test ( C) 1481 ( D) 123 13 下列语句中能正确定义变量的是 ( )。 ( A) const int*p NULL; ( B) const int y 99; ( C) const int x 0; ( D) const int z: 100; 14 有如下程序: #includ
6、e iostream using namespace std; int main( ) int sum 0: for(int i 1; i 4; i ) for(int j i; j 4; j )sum j; cout sum end1; return 0; 运行时的输出结果是 ( )。 ( A) 15 ( B) 17 ( C) 16 ( D) 14 15 下列语句中,能够进行正确初始化的是 ( )。 ( A) char str “abcde“; ( B) char*str “abcde“; ( C) char str4 “abcde“; ( D) char str5 “abcde“; 16
7、有如下程序段: #include iostream using namespace std; int i 1; int j 4; int main( ) int i 5; j i; cout i j end1; return 0; 运行时的输出结果是 ( )。 ( A) 14 ( B) 95 ( C) 59 ( D) 55 17 下列关于运 算符重载的叙述中,错误的是 ( )。 ( A)重载运算符时能够改变运算符原有的优先级 ( B)有些运算符不能作为普通函数重载 ( C)重载运算符时不能改变运算符原有的操作数个数 ( D)加法运算符重载为成员函数时形参表只有一个参数 18 下列运算符函数中肯
8、定不属于类 Can的成员函数的是 ( )。 ( A) int operator (Can, Can); ( B) Can operator (double); ( C) int operator (Can); ( D) Can operator (int); 19 下列因素中,对 C编译器区分重载函数无任何意义的是 ( )。 ( A)常成员函数关键字 const ( B)返回值类型 ( C)参数类型 ( D)参数个数 20 有如下程序: #include iostream using namespace std; class Date public: Date(int y 2014, int
9、m 9, int d 9): year(y), month(m), day(d) _(ostream&stream, Date&ddd)运算符的定义 stream ddd year ddd month ddd day: return stream; private: int year, month, day; ; int main( ) Date GoodDay; cout GoodDay end1: return 0; 若运行时的输出结果是 “2014 9 9”,横线处的内容应为 ( )。 ( A) istream&operator ( B) ostream&operator ( C) fr
10、iend istream&operator ( D) friend ostream&operator 21 已知函数 fune的原型为 int func(int, int); 则下列选项中,不能作为它的重载函数原型的是 ( )。 ( A) bool func(int, int, b001); ( B) void func(int a, int b); ( C) int func(int, char); ( D) float func(double, int); 22 已知表达式 x中的 “ ”是作为成员函数重载的运算符,则与 x等效的运算符函数调用形式为 ( )。 ( A) x operato
11、r (1) ( B) operator (x) ( C) x operator () ( D) x operator (X) 23 有如下程序: #include iostream using namespace std; void fun(int &x, int y) int temp; temp x: x y: y temp: int main( ) int x 4, y 5; fun(x, y); cout x , y; return 0: 运行后的输出结果是 ( )。 ( A) 4, 5 ( B) 5, 4 ( C) 4, 4 ( D) 5, 5 24 有如下程序: #include
12、iostream using namespace std; int f1(int x, int y 5)return x y; int f1(double x)return x; int main( ) int a 3; double b 2 5: cout f1(a) f1(b); return 0; 运行后的输出结果是 ( )。 ( A) 5 ( B) 6 ( C) 10 ( D) 11 25 有如下类定义: class MyClass public: MyClass(int d 0): val(d) _运算符函数的声明 private: int val; ; 若要使语句序列 MyClas
13、s X(2), y(4), z; z 7 y: y x 3: 能够正常运行,横线处的声明语句应为 ( )。 ( A) friendMyClass operator (MyClass, MyClass); ( B) friendMyClass operator (MyClass&, MyClass&); ( C) friendMyClass operator (MyClass, MyClass&); ( D) friendMyClass operator (MyClass&, MyClass); 26 已知函数 func的原型为 int func(int, int); 则下列选项中,不能作为它的
14、重载函数原型的是 ( )。 ( A) bool func(int, int, char); ( B) int func(int, char); ( C) float fune(int a, int); ( D) double func(double, int); 27 已知表达式 x中的 “ ”是作为成员函数重载的运算符,则与 x等效的运算符函数调用形式为 ( )。 ( A) x operator (1) ( B) operator (x) ( C) x operator (x, 1) ( D) x operator () 28 计算数列第 n项的函数定义如下: int fa(int n) i
15、f(n 1)return 1; else return 3*fa(n 1) 2; 若执行函数调用表达式 fa(4)时,返回的函数值为 ( )。 ( A) 53 ( B) 17 ( C) 23 ( D) 49 29 计算斐波那契数列第 n项的函数定义如下: mt fib(int n) if(n 0) return 1: else if(n 1) return 2: else return fib(n 1) 6b(n 2); 执行调用表达式 fib(2),则函数 fib被调用的次数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 30 有如下程序: #include lostr
16、eam using namespace std; double add(double a, double b, double c 1) return a b c: int main( ) int result add(2, 3); cout result end1: return 0: 运行后的输出结果是 ( )。 ( A) 3 ( B) 5 ( C) 6 ( D)编译出错 31 下列关于多个成员对象构造函数调用顺序的叙述中,正确的是 ( )。 ( A)与成员对象在类中声明的顺序相同 ( B)与成员对象的析构函数的调用顺序相同 ( C)与成员对象在初始化列表中的初始化顺序相同 ( D)与成员对
17、象在构造函数体中被调用的顺序相同 32 有如下类定义和对象定义: class A public: A( ): data(0) A(int x): data(x) A( ) int GetData( )constreturn data; void SetData(int n)data n; prirate: int data: ; const A a(5); A b(8); 下列函数调用中错误的是 ( )。 ( A) a GetData( ); ( B) a SetData; ( C) b GetData; ( D) b SetData; 33 在 C中,编泽系统自动为一个类生成默认构造函数的条
18、件是 ( )。 ( A)该类没有定义任何有参构造函数 ( B)该类没有定义任何无参构造函数 ( C)该类没有定义任何构造函数 ( D)该类没有定义任何成员函数 34 下列关于构造函数的叙述中,错误的是 ( )。 ( A)构造函数在创建类对象时自动执行 ( B)构造函数要负责对所有数据成员进行初始化 ( C)可以为构造函数的参数设置默认值 ( D)如果没有声明任何构造函数,则该类的构造函数 有 2个 35 下列关于构造函数的叙述中,正确的是 ( )。 ( A)每个类中都有一个复制构造函数 ( B)类成员的初始化在构造函数体中进行 ( C)创建对象时由用户负责调用构造函数 ( D)默认构造函数是指
19、参数表为空的构造函数 36 下列关于类成员的叙述中,正确的是 ( )。 ( A)友元函数是类的成员函数 ( B)类成员的默认访问权限是私有的 ( C)类的成员函数都是内联函数 ( D)类成员函数必须声明为公有的 37 下列关于 this指针的叙述中,正确的是 ( )。 ( A)类的成 员函数都有 this指针 ( B)类的友元函数都有 this指针 ( C)类的非静态成员函数具有 this指针 ( D)任何与类相关的函数都有 this指针 38 有如下程序: #include iostream using namespace std; class clock public: clock( ):
20、 seconds(O) ; clock&operator ( ) this seconds; return * this; void display( ) cout this seconds : private: int seconds; ; int main ( ) clock c; c: c display( ); ( ( c) display( ); c display( ); return 0; 运行后的输出结果是 ( )。 ( A) 1 3 2 ( B) 1 3 3 ( C) 1 2 3 ( D) 1 2 2 39 下列关于构造函数的叙述中,错误的是 ( )。 ( A)构造函数名与类
21、名相同 ( B)构造函数可以有返回值 ( C)构造函数可以重载 ( D)每个类都有构造函数 40 下列关于 this指针的叙述中,错误的是 ( )。 ( A) this指针只能在类的非静态成员函数中使用 ( B) this指针存储着对象的地址 ( C) this指针不需要显式定义 ( D)在构造函数中不能使用 this指针 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,此工程中含有一个源程序文件 proj1 cpp。其中位于每个注释 “ ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Constr
22、uctor called The value is 10 Copy constructor called The value is 10 Destructor called Destructor called 注意:只修改注释 “ ERROR *found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include iostream using namespace std; class MyClass public: ERROR*found* MyClass(int i) value i; cout “Constructor called “ end1; ERROR *f
23、ound* MyClass(const MyClass p) value P value; cout “Copy constructor called “ end1; void Print() cout “The value is“ alue end1; ERROR*found* void MyClass() cout “Destructor called “ end1; private: int value; ; int main() MyClass obj1; obj1 Print(); MyClass obj2(obj1); obj2 Print(); return 0; 三、简单应用题
24、 42 请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2,该工程中包含一个程序文件 main cpp,其中有坐标点类 point、线段类 Line和三角形类Triangle的定义,还有 main函数的定义。程序中两点间距离的计算是按公式 d实现的,三角形面积的计算是按公式 f现的,其中 s 。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: Side 1: 9 43398 Side 2: 5 Side 3: 8 area: 20 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “ *found
25、*”。 #include iostream #include cmath using namespace std; class Point坐标点类 public: const double x, y; Point(double x 0 0, double y 0 0): x(x),y(y) *found* double distanceTo(_) const 到指定点的距离 return sqrt(x p x)*(x p x) (y p y)*(yp y); ; class Line线段类 public: const Point p1, p2;线段的两个端点 *found* Line(Poin
26、t p1, Point p2): _ double length()constreturn p1 distanceTo(p2); 线段的长度 ; class Triangle:角形类 public: const Point p1, p2, p3;三角形的三个顶点 *found* Triangle(_): p1(p1), p2(p2), p3(p3) double length1( )const边 p1, p2的长度 return Line(p1, p2) length(); double length2( )const边 p2, p3的长度 return Line(p2, p3) length
27、(); double length3( )const边 p3, p1的长度 return Line(p3, p1) length(); double area()const三角形面积 *found* double s_; return sqrt(s*(s length1()*(s length2()*(s length3(); ; int main() Triangle r(Point(0, 0, 8 0), Point(5 0, 0 0), Point(0 0, 0 0); cout “Side 1: “ r lengthl() end1; cout “Side 2: “ r length2
28、() end1; cout “Side 3: “ r length3() end1; cout “area: “r area() end1; return 0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3 h、proj3 cpp、 writeToFile obj。补充完成重 载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 要求: 补充编制的内容写在 “ *333*”与“*666*”两行之间。不
29、得修改程序的其他部分。 注意: 程序最后调用 writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 out dat中。输出函数 writeToFile已经编译为 obj文件。 proj3 h #include iostream #include iomanip using namespace std; class MiniString public: friend ostream&operator (ostream&output, const MiniString s)重载流插入运算符 output s sPtr; return output; friend ist
30、ream &operator (istream &input, MiniString &s)重载流提取运算符 char temp100;用于输入的临时数组 temp0 O;初始为空字符串 input setw(100) temp; int inLen strlen(temp);输入字符串长度 if(inLen! 0) s length inLen;赋长度 if(s sPtr! 0)deletes sPtr;避免内存泄漏 s sPtr new chars length 1; strcpy(s sPtr, temp);如果 s不是空指针,则复制内容 else s sPtr0 0;如果 s是空指针,
31、则为空字符串 return input; void modString(const char * string2)更改字符串内容 if(string2! 0)如果 string2不是空指针,则复制内容 if(strlen(string2)! length) length strlen(string2); deletesPtr; sPtr new charlength 1;分配内存 strcpy(sPtr, string2); else sPtr0 0;如果 string2是空指针,则为空字符串 MiniString& operator (const MiniString &otherStrin
32、g); MiniString(const char * s “ “): length(s! 0)?strlen(s): 0)构造函数 sPtr 0; if(length! 0) setString(s); MiniString()析构函数 deletesPtr; private: int length;字符串长度 char * sPtr;指向字符串起始位置 void setString(const char*string2)辅助函数 sPtr new charstrlen(string2) 1;分配内存 if(string2 1 0)strcpy(sPtr, string2);如果 strin
33、g2不是空指针,则复制内容 else sPtr0 0;如果 string2是空指针,则为空字符串 ; proj3 cpp #inelude iostream #include iomanip using namespace std; #include“proj3 h“ MiniString& MiniString operator (const MiniString &otherString) 重载赋值运算符函数。提示:可以调用辅助函数 setString *33* *666* int main() MiniString strl(“Hello!“), str2; void writeToFi
34、le(const char *); str2 str1;使用重载的赋值运算符 str2 modString(“Happy new year!“); cout str1 n; cout str2 n: writeToFile(“ “); return 0; 国家二级( C+)机试模拟试卷 181答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 数据的逻辑结构有两个要素:一是数据元素的集合,通常记为 D;二是 D上的关系,它反映了 D中各数据元素之间的前后件关系,通常记为 R。即一个数据结构可以表示成 B (D, R)。其中 B表示数据结构。为了反映 D中各数据元素之间的前后件关系,一般
35、用二元组来表示。例如,假设 a与 b是 D中的两个数据,则二元组 (a, b)表示 a是 b的前件, b是 a的后件。如果一个非空的数据结构满足下列两个条件: 有且只有一个根结 点; 每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。根据上述理论,本题中 f为根结点,每个结点有一个前件和一个后件,符合线性结构的定义。故本题答案为 A选项。 2 【正确答案】 A 【试题解析】 在循环队列中,当 front real时,不能确定是队列满还是队列空。在实际使用循环队列时,为了能区分队列满还是队列空,通常还需要增加一个标志 s。当
36、s 0时表示队列空,当 s 1且 front rear时表示队列满。故本题答案为 A选项。 3 【正确答案】 A 【试题解析】 带链的栈是具有栈属性的链表。线性链表的存储单元是不连续的,为把存储空间中一些离散的空闲存储结点利用起来,把所有空闲的结点组织成一个带链的栈,称为可利用栈。线性链表执行删除操作运算时,被删除的结点可以“回收 ”到可利用栈,对应于可利用栈的入栈运算,线性链表执行插入运算时,需要一个新的结点,可以在可利用栈中取栈顶结点,对应于可利用栈的退栈运算。可利用栈的人栈运算和退栈运算只需要改动 top指针即可。当 top bottom 20时链栈中的元素个数为 1。故本题答案为 A选
37、项。 4 【正确答案】 A 【试题解析】 根据题目有 6个度为 0的结点: 1个度为 1的结点:3个度为 2的结点: 因此最后度为 3的结点有 1个:故本题答案为 A选项。 5 【正确答案】 A 【试题解析】 模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为 A选项。 6 【正确答案】 A 【试题解析】 黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试 和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要
38、有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖 )、基本路径测试等。故本题答案为 A选项。 7 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为 3种类型:概念数据模型、逻辑数据模型、物理数据模型。概念数据模型有实体联系模型 (E R模型 )、面向对象模型及谓词模型;逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 在二 维表中凡能唯一标识元组的最小属性集称为该表的键或码。表A中的某属性集是某表 B的键,则称该属性集为 A的外键或外码。故本题答案为A选项。 9 【正确答案】 A 【试题解析】 关系模型中可
39、以有 3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性约束是指若属性 M是关系的主键,则属性 M中的属性值不能为空值。故本题答案为 A选项。 10 【正确答案】 A 【试题解析】 若 XY ,但 Y不完全函数依赖于 X,则称 Y对 X部分函数依赖。关系模式 S中, S#Sd , Dc不完全依赖于 S#且 S#为主属性。故本题答案为A选项。 11 【正确答案】 D 【试题解析】 函数 Copy( )的参数是一个引用类型,引用的是类 X的对象,本题答案为 D。 12 【正确答案】 D 【试题解析】 C的标识符命名规则是:标识符可以由字母、数字和下划线组成,并且第一个
40、字符必须是字母或下划线。选项 A、 B、 C都满足,选项 D以数字开头,不满足标识符的命名规则,本题答案为 D。 13 【正确答案】 C 【试题解析】 const关键字用来定义常量,定义的同时必须完成初始化,而初始化需要使用赋值运算 符指定初值,选项 A没有初始化,错误;选项 B使用关系运算符进行赋值运算,错误;选项 D不是初始化语句,错误;选项 C定义整型变量x为常量,值为 0,正确,本题答案为 C。 14 【正确答案】 D 【试题解析】 题意程序中 sum初值为 0,两个嵌套的 for循环将循环体中 j的当前值累加到 sum中,其中外层 for循环中, i取值为 1时,内嵌 for循环的
41、j取值为 1, 2, 3, sum累加 6;当 i取值为 2时, j取值为 2, 3, sum累加 5;当 i取值为 3时, j取值为 3, sum累加 3;综上 for循环执行结束后, sum的值为 6 5 3 14,本题答案为 D。 15 【正确答案】 B 【试题解析】 选项 A中, str是一个字符变量,不能用一个字符串初始化,错误;选项 B中 str是一个字符指针,使用字符串的首地址初始化,正确;选项 C中 str是一个字符数组,数组长度为 4个字节,初始化的字符串有 6个字符 (包括结尾的空字符 ),长度不够,错误;选项 D中 str是一个字符数组,数组长度为 5个字节,初始化的字符
42、串有 6个字符 (包括结尾的空字符 ),长度不够,错误;本题答案为 B。 16 【正确答案】 C 【试题解析】 题意程序中 main( )函 数外的 i和 j是全局变量,初值分别是 1和4; main( )函数内部定义一个局部变量 i,初值为 5,所以在 main( )函数中,局部变量 i会屏蔽全局变量 i,输出 i的值为 5; main( )函数内部的 j使用的是全局变量j,将 j的值累加局部变量 i,并重新赋给 j,得到 j的值为 9,输出 j的值是 9,所以程序输出结果为: 59,本题答案为 C。 17 【正确答案】 A 【试题解析】 C中,运算符重载的规则有:重载不能改变运算符的优先级
43、,选项 A错误;赋值运算符、下标运算符 、调用运算符 ( )、成员访问箭头运算符一 等必须重载为成员函数,不能作为普通函数重载,选项 B正确;重载不能改变运算符运算对象 (操作数 )的个数,选项 C正确;加法运算符有两个操作数,作为成员函数重载时,第一操作数是调用对象本身,所以形参表只有一个操作数,选项 D正确;本题答案为 A。 18 【正确答案】 A 【试题解析】 运算符一至多有 2个操作数,如果作为成员函数重载,那么形参表至多只有一个操作数,选项 A中形参表有 2个操作数,所以选项 A一定不属于类Can的成员函数,选项 B、 C、 D都可能是 Can的成员函数,本题答案为 A。 19 【正
44、确答案】 B 【试题解析】 C中,两个函数是重载函数,必须具有相同的名字,且形参表或 const属性不同,选项 A、 C、 D都可以区分;函数不能仅仅基于不同的返回类型而实现重载,选项 B不能区分,本题答案为 B。 20 【正确答案】 D 【试题解析】 题意中 Date类重载了插入运算符,其中第一个参数是输出流对象的形参引用,第二个参数是 Date类对象的引用;由重载函数的返回值可知,返回类型也是输出流对象的引用,选项 A、 C错误;另外由于 main( )函数中调用重载的插入运算符时: cout (GoodDay,第一个参数是 cout,第二个参数是GoodDay,可知重载函数的两个参数都有
45、实参传入,不存在隐式参数,所以该重载函数不是成员函数,而只能是类 Date的友元函数,选项 B错误,选项 D正确。 21 【正确答案】 B 【试题解析】 C中,两个函数是重载函数,必须具有相同的名字,且形参表或 const属性不同,其中形参表不同包括形参的类型不同或形参的数量不同;选项A中参数个数不同,是重载函数;选项 C中参数类型不同,是重载函数;选项 D中参数类型不同,是重载函数;函数不能仅仅基于不同的返回类型而实现重载,选 项 B仅仅返回类型不同,不是重载函数,本题答案为 B。 22 【正确答案】 C 【试题解析】 增量运算符有前缀自增运算符和后缀自增运算符两种,在重载该运算符时,由于他
46、们的形参数目和类型都相同,为了可以区分是前缀运算符还是后缀运算符,通常将后缀运算符函数增加一个额外的 int型形参,使用后缀运算符时,编译器提供 0作为这个形参的实参,所以在调用前缀自增运算符时,使用对象显示的调用 x operator ( ),调用后缀自增运算符时,显示的调用x operator (0),本题答案为 C。 23 【正 确答案】 D 【试题解析】 fun( )函数的形参 x是整型引用类型, y是整型,将 x和 y的值交换后,传给 x的实参值被修改为传给 y的实参值,而传给 y的实参值不变,所以main()函数中,实参 x、 y在调用 fun( )函数后, x的值修改为 5, y的值 5保持不变,输出结果为: 5, 5,答案为 D。 24 【正确答案】 C 【试题解析】 题意中两个