1、C+语言笔试-19 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。A12345ABCDE BEDCBA54321CABCDE12345 D54321EDCBA(分数:1.00)A.B.C.D.2.下列叙述中正确的是_。A循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D循环队列中元素的个
2、数是由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D.3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。AO(n) BO(n 2) CO(log 2n) DO(nlog 2n)(分数:1.00)A.B.C.D.4.下列叙述中正确的是_。A顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C顺序存储结构能存储有序表,链式存储结构不能存储有序表D链式存储结构比顺序存储结构节省存储空间(分数:1.00)A.B.C.D.5.数据流图中带有箭头的线段表示的是_。A控制流 B事件驱动 C模块调
3、用 D数据流(分数:1.00)A.B.C.D.6.在软件开发中,需求分析阶段可以使用的工具是_。AN-S 图 BDFD 图 CPAD 图 D程序流程图(分数:1.00)A.B.C.D.7.在面向对象方法中,不属于“对象”基本特点的是_。A一致性 B分类性 C多态性 D标识唯一性(分数:1.00)A.B.C.D.8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。A一对一 B一对多 C多对一 D多对多(分数:1.00)A.B.C.D.9.在数据管理技术发展的三个阶段中,数据共享最好的是_。A人工管理阶段B文件系统阶段C数据库系统阶段D三个阶段相同(分数:1.00)A.B.C.D.10.有三
4、个关系 R、S 和 T 如下:RABm1n2SBC1335TABCm13由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。A笛卡尔积 B交 C并 D自然连接(分数:1.00)A.B.C.D.11.下列语句中,错误的是_。Aconst int buffer=256; Bconst double*point;Cint const buffer=256; Ddouble*const point;(分数:1.00)A.B.C.D.12.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)语句 1else语句 2关于上面的语法格式,下列表述中错误的是_。A条件部分
5、可以是一个 if 语句,例如 if(if(a=0)B语句部分可以是一个 if 语句,例如 if()if()C如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D语句部分可以是一个循环语句,例如 if()while()(分数:1.00)A.B.C.D.13.有如下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是_。A*p+9 B*(p+8) C*p+=9 Dp+8(分数:1.00)A.B.C.D.14.有如下程序段:int i=0,j=1;int /r=j;/int*p=/*p=r;/其中会产生编译错误的语句是_。A B
6、C D(分数:1.00)A.B.C.D.15.下列字符串中,不可以用做 C+标识符的是_。Ay_2006 B_TEST_H CReturn Dswitch(分数:1.00)A.B.C.D.16.为了取代 C 中带参数的宏,在 C+中使用_。A重载函数 B内联函数 C递归函数 D友元函数(分数:1.00)A.B.C.D.17.通过运算符重载,可以改变运算符原有的_。A操作数类型 B操作数个数 C优先级 D结合性(分数:1.00)A.B.C.D.18.在函数中,可以用 auto、extem、register 和 statlc 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存
7、储类型是_。Aauto Bextern Cregister Dstatic(分数:1.00)A.B.C.D.19.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是_。Aint operator-(FunNumber); BFunNumber operator-();CFunNumber operator-(int); Dint operator-(FunNumber,FunNumber);(分数:1.00)A.B.C.D.20.若有下面的函数调用:fun(a+b,3,max(n-1,b)则 fun 的实参个数是_。A3 B4 C5 D6(分数:1.00)A.B.C.D.21.关
8、于运算符重载,下列表述中正确的是_。AC+已有的任何运算符都可以重载B运算符函数的返回类型不能声明为基本数据类型C在类型转换符函数的定义中不需要声明返回类型D可以通过运算符重载来创建 C+中原来没有的运算符(分数:1.00)A.B.C.D.22.有如下程序:#includeiostreamusing namespace std;int main()void function(double val):double val;function(val);coutval;retum0;void function(double val)val=3;编译运行这个程序将出现的情况是_。A编译出错,无法运行
9、B输出:3C输出:3.0 D输出一个不确定的数(分数:1.00)A.B.C.D.23.下列情况中,不会调用拷贝构造函数的是_。A用一个对象去初始化同一类的另一个新对象时B将类的一个对象赋值给该类的另一个对象时C函数的形参是类的对象,调用函数进行形参和实参结合时D函数的返回值是类的对象,函数执行返回调用时(分数:1.00)A.B.C.D.24.以下关键字不能用来声明类的访问权限的是_。Apublic Bstatic Cprotected Dprivate(分数:1.00)A.B.C.D.25.由于常对象不能被更新,因此_。A通过常对象只能调用它的常成员函数B通过常对象只能调用静态成员函数C常对象
10、的成员都是常成员D通过常对象可以调用任何不改变对象值的成员函数(分数:1.00)A.B.C.D.26.下列有关继承和派生的叙述中,正确的是_。A如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员B派生类的成员函数可以访问基类的所有成员C基类对象可以赋值给派生类对象D如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类(分数:1.00)A.B.C.D.27.在公有继承的情况下,允许派生类直接访问的基类成员包括_。A公有成员 B公有成员和保护成员C公有成员、保护成员和私有成员 D保护成员(分数:1.00)A.B.C.D.28.有如下程序:#includeiostreamus
11、ing namespace std;class Basepublic:void fun()cout“Base:fun“endl;class Derived:public Basepublic:void fun()_cout“Derived:fun“endl;int main()Derived d;d.fun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下画线处应填入的语句是_。ABase.fun(); BBase:fun(); CBase-fun(); Dfun();(分数:1.00)A.B.C.D.29.有如下程序:#includeiostr
12、eamusing namespace std;class MyClasspublic:MyClass()coutA;MyClass(char c)coutc;MyClass()coutB;int main()MyClass p1.*p2;p2=new MyClass(X);delete p2;return 0;执行这个程序的输出结果是_。AABX BABXB CAXB DAXBB(分数:1.00)A.B.C.D.30.有如下程序:#includeiostreamusing namespace std;int i=1;class Funpublic:static int i;int value(
13、)return i-1;int value()constreturn i+1;int Fun:i=2;int main()int i=3;Fun fun1;const Fun fun2;_return 0;若程序的输出结果是:123则程序中下画线处遗漏的语句是_。Acoutfun1.value()Fun:ifun2.value();BcoutFun:ifun1.value()fun2.value();Ccoutfun1.value()fun2.value()Fun:i;Dcoutfun2.value()Fun:ifun1.value();(分数:1.00)A.B.C.D.31.右如下程序:#i
14、ncludeiostreamusing namespace std;class Objstatic int i;public:Obj()i+;Obj()i-;static int getVal()return i;int Obj:i=0;void f()Obj ob2;coutob2.getVal();irit main()Obj ob1;f();Obj*ob3=new Obj;coutob3-getVal();delete ob3;coutObj:getVal();return 0;执行这个程序的输出结果是_。A232 B231 C222 D221(分数:1.00)A.B.C.D.32.有如
15、下程序:#includeiostreamusing namespace std;class Pairint m,n;public:Pair(int j,int k):m(j),n(k)int get()return m;int get()constreturn m+n;int main()Pair a(3,5);const Pair b(3,5);couta.get()b.get();return 0;执行这个程序的输出结果是_。A33 B38 C83 D88(分数:1.00)A.B.C.D.33.有如下程序:#includeiostreamusing namespace std;class
16、Baseprotected:Base()coutA;Base(char c)coutc;class Derived:public Basepublic:Derived(char c)coutc;int main()Derived dl(B);return 0;执行这个程序的输出结果是_。AB BBA CAB DBB(分数:1.00)A.B.C.D.34.有如下类定义:class MyBaseint k;public:MyBase(int n=0):k(n)int value()constreturn k;class MyDerived:MyBaseint j;public:MyDerived(
17、int i):j(i)int getK()constreturn k;int getj()constreturn j;编译时发现有一处语法错误,对这个错误最准确的描述是_。A函数 getK 试图访问基类的私有成员变量 kB在类 MyDerived 的定义中,基类名 MyBase 前缺少关键字 public、protected 或 privateC类 MyDerived 缺少一个无参的构造函数D类 MyDerived 的构造函数没有对基类数据成员 k 进行初始化(分数:1.00)A.B.C.D.35.有如下程序:#includeiostreamusing namespace std;class
18、Instrumentpublic:virtual void Display()=0;class Piano:public Instrumentpublic:void Display()/*函数体略*/;int main()Instrument s;Instrument*p=0;/;return 0;下列叙述中正确的是_。A语句“Insturment*p=0;”编译时出错 B语句“Instrument s;”编译时出错C类 Piano 中的 Display 函数不是虚函数 D类 Instrument 是一个虚基类(分数:1.00)A.B.C.D.36.有如下程序:#includeiostream
19、using namespace std;class Apublic:virtual void func1()cout“A1“;void func2()cout“A2“;class B:public Apublic:void func1()cout“B1“;void func2()cout“B2“;int main()A*p=new B;p-func1();p-func2();delete p;retum 0;执行这个程序的输出结果是_。AB1B2 BA1A2 CB1A2 DA1B2(分数:1.00)A.B.C.D.37.关于在调用模板函数时模板实参的使用,下列表述中正确的是_。A对于虚拟类型参
20、数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D对于常规参数所对应的模板实参,任何情况下都不能省略(分数:1.00)A.B.C.D.38.关于关键字 class 和 typename,下列表述中正确的是_。A程序中的 typename 都可以替换为 classB程序中的 class 都可以替换为 typenameC在模板形参表中只能用 typename 来声明参数的类型D在模板形参表中只能用 class 或 typename 来
21、声明参数的类型(分数:1.00)A.B.C.D.39.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是_。Aios_base:cur Bios_base:beg Cios_base:out Dios_base:end(分数:1.00)A.B.C.D.40.下列关于 C+流的描述中,错误的是_。AcoutA表达式可输出字符 ABeof()函数可以检测是否到达文件尾C对磁盘文件进行流操作时,必须包含头文件 fstreamD以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件(分数:1.00)A.B.C.D.二、操作题(总题数:3,分数:60.00)41.请使用 V
22、C6 或使用答题菜单打开考生文件夹 proj1 下的工程 proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“/ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Constructor called.The value is 10Max number is 20Destructor called.注意:只能修改注释“/ERROR*found*”的下一行语句,不要改动程序中的其他内容。/ proj1.cpp#include iostreamusing namespace std;class MyClass public:/ERROR*f
23、ound*void MyClass(int i)value=i;cout“Constructorcalled.“endl;int Max(int x,int y)return xy?x:y;/求两 Ai 整数的最大值/ERROR*found*int Max(int x,int y,int z=0)/求三个整数的最大值if(xy)return xz?x:z;elsereturn yz?y:z;int GetValue()constreturn value;MyClass()cout“Destructorcalled.“endl;private:int value;int main ()MyCla
24、ss obj(10);cout“The value is“value()endl;cout“Max number is“obj.Max(10,20)endl;return 0;(分数:20.00)_42.请使用 VC6 或使用答题菜单打开考生文件夹 proj2 下的工程 proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为:The element of stack are:4 3 2 1注意:请勿修改主函数 main 和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。/proj2.c
25、pp#include iostreamusing namespace std;const int Size=5;class Stack;class Itempublic:/*found*Item(const intItem* next;friend class Stack;class Stackpublic:Stack():top(NULL)Stack();int Pop();void Push(const intprivate:Item*top;:Stack:Stack()Item*p=top,*q;while(p!=NULL)q=p-next;/*found*_;/释放 p 所指向的节点p
26、=q;int Stack:Pop()Item* temp;int ret;/*found*_;/使 temp 指向栈顶节点ret=top-item;top=top-next;delete temp;return ret;void Stack:Push(const int/*found*_;/使新节点的 next 指针指向栈顶数据top=temp;int main ()Stack s;for(int i=1;iSize;i+)s.Push(i);cout“The element of stack are:“;for(i=1;iSize;i+)return 0;(分数:20.00)_43.请使用
27、VC6 或使用答题菜单打开考生文件夹 proj3 下的工程文件 proj3,此工程中包含一个源程序文件 proj3.cpp,其中定义了用于表示平面坐标系中的点的类 MyPoint 和表示矩形的类 MyRectangle;程序应当显示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:(1)在“/*1* *found*”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对up_left 和 down_right 进行初始化。(2)在“*2* *found*”的下方是成员函数 getDownLeft 的定义中的一条语句。函数 getDownL
28、eft返回用 MyPoint 对象表示的矩形的左下角。(3)在”/*3* *found*”的下方是成员函数 area 的定义,它返回矩形的面积。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。/proj3.cpp#includeiostreamusing namespace std;class MyPoint/表示平面坐标系中的点的类double x;double y;public:MyPoint (double x,double y)this-x=x;this-y=y;double getX()constreturn x;double getY(
29、)constreturn y;void show()constcout(x,y););class MyRectangle /表示矩形的类MyPoint up_left; /矩形的左上角顶点MyPoint down_right; /矩形的右下角顶点public:MyRectangle (MyPoint upleft, MyPoint downright);MyPoint getUpLeft () const returnup_left; /返回左上角坐标MyPoint getDownRight () const return down_right; /返回右下角坐标MyPoint getUpRi
30、ght () const;/返回右上角坐标MyPoint getDownLeft () const;/返回左下角坐标double area () const; /返回矩形的面积;/*1* *found*MyRectangle:MyRectangle(_):up_left(p1),down_right(p2) MyPoint MyRectangle: getUpRight()constreturn MyPoint(down_right.getX (),up_left.getY();MyPoint MyRectangle: getDownLeft()const/*2* *found*return
31、MyPoint(_);/*3* *found*_ area () constreturn (getUpLeft ().getX()-get-DownRight().getX()*(getDownRight().getY()-getUpLeft().getY();int main ( )MyRectangle r (MyPoint (0,2),MyPoint(2,0);r.getUpLeft().show();r.getUpRight().show();r.getDownRight().show();r.getDownLeft().show();coutr.area()endl;return 0
32、;(分数:20.00)_C+语言笔试-19 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。A12345ABCDE BEDCBA54321CABCDE12345 D54321EDCBA(分数:1.00)A.B. C.D.解析:解析 栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B。2.下列叙述中正确的是_。A循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B在循环队列中,只需要队头指针就能反映队列
33、中元素的动态变化情况C在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D循环队列中元素的个数是由队头指针和队尾指针共同决定(分数:1.00)A.B.C.D. 解析:解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以 A 错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以 B 与 C 错误。3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。AO(n) BO(n 2) CO(log 2n) DO(nlog 2n)(分数:1.00)A.B.C. D.解析:解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是
34、对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较 log2n 次,而顺序查找需要比较 n 次。4.下列叙述中正确的是_。A顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C顺序存储结构能存储有序表,链式存储结构不能存储有序表D链式存储结构比顺序存储结构节省存储空间(分数:1.00)A. B.C.D.解析:解析 链式存储结构既可以针对线性结构也可以针对非线性结构,所以 B 与 C 错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以 D 错误。5.数据流图中带有箭头的线段表示的
35、是_。A控制流 B事件驱动 C模块调用 D数据流(分数:1.00)A.B.C.D. 解析:解析 数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。6.在软件开发中,需求分析阶段可以使用的工具是_。AN-S 图 BDFD 图 CPAD 图 D程序流程图(分数:1.00)A.B. C.D.解析:解析 在需求分析阶段可以使用的工具有数据流图 DFD 图,数据字典 DD,判定树与判定表,所以选择 B。7.在面向对象方法中,不属于“对象”基本特点的是_。A一致性 B分类性 C多态性 D标识唯一性(分数:1.00)A. B.C.D.解析:解析 对象有如下些基本特点:
36、标识唯一陛、分类性、多态性、封装性、模块独立性好。所以选择 A。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。A一对一 B一对多 C多对一 D多对多(分数:1.00)A.B. C.D.解析:解析 因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。9.在数据管理技术发展的三个阶段中,数据共享最好的是_。A人工管理阶段B文件系统阶段C数据库系统阶段D三个阶段相同(分数:1.00)A.B.C. D.解析:解析 数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻
37、辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 C。10.有三个关系 R、S 和 T 如下:RABm1n2SBC1335TABCm13由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。A笛卡尔积 B交 C并 D自然连接(分数:1.00)A.B.C.D. 解析:解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T 关系中的有序组可知 R 与 S 进行的是自然连接操作。11.下列语句中,错误的是_。Aconst int buffer=256; Bconst double*poin
38、t;Cint const buffer=256; Ddouble*const point;(分数:1.00)A.B.C.D. 解析:解析 const 是一个 C+关键字,用于限定不允许改变的变量。选项 B 是指向常量的指针,定义时可以不初始化;选项 D 是指针常量,定义时必须初始化。故答案为 D。12.if 语句的语法格式可描述为:格式 1:if(条件)语句或格式 2:if(条件)语句 1else语句 2关于上面的语法格式,下列表述中错误的是_。A条件部分可以是一个 if 语句,例如 if(if(a=0)B语句部分可以是一个 if 语句,例如 if()if()C如果在条件前加上逻辑非运算符!并
39、交换语句 1和语句 2的位置,语句功能不变D语句部分可以是一个循环语句,例如 if()while()(分数:1.00)A. B.C.D.解析:解析 本题考查 if 语句,if 语句的条件部分不能嵌套 if 语句,所以 A 选项错误;B 选项就是 if语句嵌套;C 选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D 选项也正确。13.有如下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是_。A*p+9 B*(p+8) C*p+=9 Dp+8(分数:1.00)A.B. C.D.解析:解析 本题考查指向数组的指针,本题中指针变量 p 指
40、向数组 a,那么*p 的值就是 1,即表示数组的第一个元素,那么数值为 9 的表达式就是将指针向后移动 8 个地址,即 p+8 指向的是数组元素值为9,所以数值为 9 的表达式是*(p+8)。14.有如下程序段:int i=0,j=1;int /r=j;/int*p=/*p=r;/其中会产生编译错误的语句是_。A B C D(分数:1.00)A. B.C.D.解析:解析 本题考查指针和引用。为引用,使用正确;中 BFunNumber operator-();CFunNumber operator-(int); Dint operator-(FunNumber,FunNumber);(分数:1.
41、00)A.B.C.D. 解析:解析 本题考查运算符重载的一些规则:一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;双目运算符=、()、-不能重载为类的友元函数;类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该运算
42、符函数必须作为一个友元函数来实现。所以答案为 D。20.若有下面的函数调用:fun(a+b,3,max(n-1,b)则 fun 的实参个数是_。A3 B4 C5 D6(分数:1.00)A. B.C.D.解析:解析 本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n-1,b)分别为其中的 3 个实参。故答案为 A。21.关于运算符重载,下列表述中正确的是_。AC+已有的任何运算符都可以重载B运算符函数的返回类型不能声明为基本数据类型C在类型转换符函数的定义中不需要声明返回类型D可以通过运算符重载来创建 C+中原来没有的运算符(分数:1.00)A.B.C. D.解析:解析
43、重载运算符的规则如 F:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为C。22.有如下程序:#includeiostreamusing namespace std;int main()void function(double val):double val;function(val);coutval;retum0;
44、void function(double val)val=3;编译运行这个程序将出现的情况是_。A编译出错,无法运行 B输出:3C输出:3.0 D输出一个不确定的数(分数:1.00)A.B.C.D. 解析:解析 本题考查函数调用及传值方式传递参数,执行函数 function 时,并没有将 3 的值传回来,而 val 又没有初始化,所以会输出一个不确定的值,D 选项正确。23.下列情况中,不会调用拷贝构造函数的是_。A用一个对象去初始化同一类的另一个新对象时B将类的一个对象赋值给该类的另一个对象时C函数的形参是类的对象,调用函数进行形参和实参结合时D函数的返回值是类的对象,函数执行返回调用时(分数:1.00)A.B. C.D.解析:解析 本题考查复制构造函数,在以下 3 种情况下使用:程序中需要新建立一个对象,并用另一个对象对它初始化;函数的参数为类的对象;函数的返回值是类的对象。其中 B 选项是由赋值运算符重载实现的。24.以下关键字不能用来声明类的访问权限的是_。Apublic Bstatic Cprotected Dprivate(分数:1.00)A.B. C.D.解析:解析 类的成员访问权限有 3 种:public(公用)、protected(保护)、private(私有)。25.由于常对象不能被更新,因此_。A通过常对象只能调用它的常成员函数B通过常对象只能