1、二级 C+笔试-366 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面对静态数据成员的描述中,正确的是( )。(分数:2.00)A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用2.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍 public 是的C.私有继承时基类中的 public 成员在派生类中仍 pri
2、vate 是的D.保护继承时基类中的 public 成员在派生类中仍 protected 是的3.有如下程序:#includeiostreamusing namespace std;class TestClass1public:virtual void fun()cout“1“;class TestClass2: public TestClass1public:TestClass2()cout“2“;class TestClass3:public TestClass2public:virtual void fun()TestClass2:fun();cout“3“;int main()Test
3、Class 1 aa,*p;TestClass2 bb;TestClass3 cc;p=P-fun();return 0;执行上面程序的输出是( )。(分数:2.00)A.1122B.2112C.2213D.22234.在下列横线处应添加的语句是( )。class Basepublic:void fun()cout“Base:fun“end1;class: Derived: public Basepublic:void fun()_/显示调用基类的 fun 函数cout“Derived:fun“end1;(分数:2.00)A.Derived:funB.Base:fun();C.Pubic:fu
4、nD.fun();5.下列关于 this 指针的叙述中,正确的是( )(分数:2.00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针6.( )提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。(分数:2.00)A.公有成员B.私有成员C.私有成员函数D.保护成员7.对关系 S 和 R 进行集合运算,结果中既包含 s 中的所有元组也包含 R 中的所有元组,这样的集合运算称为( )。(分数:2.00
5、)A.并运算B.交运算C.差运算D.积运算8.有如下程序:#includeiostreamusing namespace std;TestClass()cout“BB“;fun()void fun()cout“Bf“;class TestClass1:public TestClasspublic:TestClass1()cout“DD“;void fun()cout“Df“;int main()TestClass1 d; return 0;执行上面的程序将输出( )。(分数:2.00)A.BBBfDDB.BBDfDDDfC.DDD.DDBBBf9.关于运算符重载,下列表述中正确的是( )。(分
6、数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型D.可以通过运算符重载来创建 C+中原来没有的运算符10.为了取代 C 中带参数的宏,在 C+中使用( )。(分数:2.00)A.重载函数B.内联函数C.递归函数D.友元函数11.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB 包括:DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括 DB 和 DBMSD.没有任何关系12.有如下程序:#includeiostreamusin
7、g namespace std;long fun(int n)if(n2)return(fun(n-1)+fun(n-2);return 2;int main()coutfun(3)end1;return 0;则该程序的输出结果应该是( )。(分数:2.00)A.2B.3C.4D.513.静态数据成员是为( )的数据。(分数:2.00)A.私有B.保护C.所有对象共享D.类成员14.建立 E-R 模型的工作,属于软件生命周期中的( )。(分数:2.00)A.需求分析阶段B.设计阶段C.编码阶段D.测试阶段15.一间教室可坐多名学生,则实体教室和学生之间的联系是( )。(分数:2.00)A.一对
8、一B.一对多C.多对一D.多对多16.下列程序的输出结果是( )。#includeiostreamusing namespace std;templateT fun(T a,T b)return(a=b)?a:b;void main()coutfun(3,6),fun(3.14F,6.28F)end1;(分数:2.00)A.6 ,3.14B.3,6.28C.3,3.14D.6,6.2817.有如下类声明:class Foo int bar;则 Foo 类的成员 bar 是( )。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数18.下列程序中横线处正确的语句是
9、( )。#includeiostreamusing namespace std;class TestClasspublic:void fun()cout“TestClass:fun“end1;class TestClass1:public TestClassvoid fun()_/显示调用基类的函数 fun()cout“TestClass1:fun“end1;;(分数:2.00)A.fun();B.TestClass.fun()C.TestClass:fun();D.TestClass-fun();19.有如下程序:#includeiostream.husing namespace std;c
10、lass TestClasspublic:TestClass ()cout“default constructor/n“;TestClass(const TestClass TestClass userCode(TestClass b)TestClass c(b);return c;int main()TestClass a,d;cout“calling userCode()/n“;d=userCode((分数:2.00)A.;return 0;void add(int X,int y,int *z)*z=y+x;int main()int a,b,c;add(8,4,add(6,a,add(
11、a,b,couta“,“b“,26.算法分析的目的是( )。(分数:2.00)A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进27.在下面的类定义中,错误的语句是( )。class Samplepublic:Sample(int val): /Sample(); /private:int a=2.5; /Sample(): /;(分数:2.00)A.B.C.D.28.若类 A 和类 B 的定义如下:#includemalloc.hclass Aint i,j;public:int geti()return i;class B: p
12、ublic Aint k;public:void make()k=i,j;);则上述定义中非法的表达式是( )。(分数:2.00)A.k=i*j;B.int k;C.return i;D.void make();29.有如下函数模板定义:templateT1 sum(T1 a1)return(a1+a2+a3);则以下调用中正确的是( )。(分数:2.00)A.sumint,4,3(5);B.sum4,3(5);C.sumint,int,int(5);D.sum(5);30.线性表常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链式存储结构B.散列方法和索引方式C.链表存储结
13、构和数组D.线性存储结构和非线性存储结构31.有如下类的定义。横线处的语句是( )。class MyClasspublic:MyClass(int a=0,int b=0)X=a;Y=b;void Change()constX-=10;Y+=10;private:_intX, Y;(分数:2.00)A.staticB.constC.mutableD.不需要填入内容32.针对数组定义 int data10;,下列表述中错误的是( )。(分数:2.00)A.用*data 可访问到数组的首元素B.用 data9可访问到数组的末元素C.用 data10访问数组元素会超出数组边界D.data 共有 10
14、 个元素,其首元素是 data133.假定 MyClass 为一个类,则该类的拷贝初始化构造函数的声明语句为( )。(分数:2.00)A.MyClassB.MyClass(MyClass x)C.MyClass(MyClass D.MyClass(MyClass *x)34.在包含 1000 个元素的线性表中实现如下各运算,所需的执行时间最长的是( )。(分数:2.00)A.线性表按顺序方式存储,在线性表的第 100 个结点后面插入一个新结点B.线性表按链接方式存储,在线性表的第 100 个结点后面插入一个新结点C.线性表按顺序方式存储,删除线性表的第 900 个结点D.线性表按链接方式存储,
15、删除指针 P 所指向的结点35.有以下程序:#includeiostreamusing namespace std;public:TestClass(int r1,int r2)R1=r1;R2=r2;void print();void print() const;private;int R1,R2;void TestClass:print()coutR1“,“R2end1;void Testclass:print() constcoutR1“,“R2end1;int main()TestClass a(5,4);const TestClass b(20,52);b.print();retur
16、n 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.20,52C.0,0D.4,5二、填空题(总题数:15,分数:30.00)36.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。(分数:2.00)填空项 1:_37.在深度为 6 的满二叉树中,度为 2 的结点个数为_。(分数:2.00)填空项 1:_38.模块的独立程度可以由两个定性标准度量。其中, 1 是度量一个模块功能强度的一个相对指标。(分数:2.00)填空项 1:_39.用数组 A1n顺序存储完全二叉树的各结点,则当 i0,且 i=_时,结
17、点 Ai的右子女是结点 A2i+1,否则结点 Ai没有右子女。(分数:2.00)填空项 1:_40.数据管理技术的发展经历了人工管理、文件系统和数据库系统 3 个阶段,其中数据独立性最高的是 1。(分数:2.00)填空项 1:_41.执行以下程序,输出结果的最后一行语句是_。#include iostream.hclass Sampleint x,y;public:Sample()x=y=0;Sample(int a,int b)x=a;y=b;Sample()if(x=y)cout“x!=y“end1;elsecout“x!=y“end1;void disp()cout“x=“x“,y=“y
18、end1;void main()Sample s1(2,3);s1.disp();(分数:2.00)填空项 1:_42.创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显示给出数组元素的初值,则调用缺省构造函数。下列程序涉及对象数组的创建和单个对象的创建,其输出结果是_。#include iostreamusing namespace std;class Foopublic:Foo(int x)coutA;Foo();int main()Foo f3, g(3);return 0;(分数:2.00)填空项 1:_43.表达式 c3=c1.operator+(c2)或 c3=op
19、erator+(c1,c2)还可以表示为 1。(分数:2.00)填空项 1:_44.已知下列程序的输出结果是 42,请将画线处缺失的部分补充完整。#includeiostreamusing namespace std;class TestClassint value;public:TestClass():value(0);void setValue(int value)_=value;,/给 TestClass 的数据成员 value 赋值void print()coutvalue;int main()TestClass f;f.setValue(42);f.print();return 0;
20、(分数:2.00)填空项 1:_45.以下程序输出结果为_。#includeiostreamusing namespace std;class TestClass 1public:TestClass1()TestClass1(int i)x1=i;void dispa()cout“x1=“x1“,“;private:int x1;:class TestClass2:public TestClass1public:TestClass2()TestClass2(int i):TestClass1(i+10)x2=i:void dispb()dispa();cout“x2=“x2end1;priva
21、te:int x2:int main()TestClass2 b(2):b.dispb();return 0;(分数:2.00)填空项 1:_46.请将下列类定义补充完整,横线处应填加语句_。class TestClasspublic:void fun()cout“Base:fun“end1;class TestClass1:public TestClasspublic:voidfun()_;显示调用基类的 fun 函数cout“TestClass1:fun“end1;(分数:2.00)填空项 1:_47.纯虚函数的声明总是以 1 结束。(分数:2.00)填空项 1:_48.在下面程序的横线处
22、填上_,使程序执行后的输出结果为 1/2005。#includeiostream.husing namespace std;class DatePublic:Date(int m=1,int y=0): month(m),year(y)void Print()coutmonth“/“yearend1;_operator+(const Dateprivate:int month, year;Date operator+(const Dateyear=d1.year+d2.year;month=d1.month+d2.month;year+=(month-1)12;month=(month-1)%
23、12+1;return Date(month,year);void main()Date d1(3,2004),d2,d3(10);d2=d3+d1;d2.Print();(分数:2.00)填空项 1:_49.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 1 的构造函数。再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。(分数:2.00)填空项 1:_50.有如下程序:#includeiostreamusing namespace std;class Apublic:A()cout“A“;A()cout“A“;class BAa;public:B()cou
24、t“B“;B()cout“B“;int main()B b;return 0:程序的输出结果是_。(分数:2.00)填空项 1:_二级 C+笔试-366 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面对静态数据成员的描述中,正确的是( )。(分数:2.00)A.静态数据成员是类的所有对象共享的数据 B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用解析:解析 静态成员表示整个类范围共享的信息;必须对静态数据成员进行初始化;静态数据成员是属于类的,不能通过类的对象调用。2.下列
25、说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public 成员在派生类中仍是 public 的B.公有继承时基类中的 private 成员在派生类中仍 public 是的 C.私有继承时基类中的 public 成员在派生类中仍 private 是的D.保护继承时基类中的 public 成员在派生类中仍 protected 是的解析:解析 公有继承中,基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以 B 是错误的,即选择 B)。3.有如下程序:#includeiostreamusing namespace std;class TestClass
26、1public:virtual void fun()cout“1“;class TestClass2: public TestClass1public:TestClass2()cout“2“;class TestClass3:public TestClass2public:virtual void fun()TestClass2:fun();cout“3“;int main()TestClass 1 aa,*p;TestClass2 bb;TestClass3 cc;p=P-fun();return 0;执行上面程序的输出是( )。(分数:2.00)A.1122B.2112C.2213 D.2
27、223解析:解析 主函数中定义 TestClass1 的对象 aa,*p 对象指针,TestClass2 的对象 bb 以及TestClass3 的对象 cc。p 指向 cc,TestClass3 为 TestClass2 的派生类,构造函数输出 2。TestClass3中 fun 函数中为 TestClass2 中的。fun,调用 TestClass2 的构造函数,输出 2。“p-fun();”,TestClass2 继承于 TestClass1 中的 fun,所以输出 1。然后输出 TestClass3 中的“cout”3”,即输出 3。4.在下列横线处应添加的语句是( )。class B
28、asepublic:void fun()cout“Base:fun“end1;class: Derived: public Basepublic:void fun()_/显示调用基类的 fun 函数cout“Derived:fun“end1;(分数:2.00)A.Derived:funB.Base:fun(); C.Pubic:funD.fun();解析:解析 此题考查的是成员函数的调用。因为横线处的作用是调用基类的 fun 函数,又因为派生类中也有 fun()函数,所以必须对 fun()函数加以限定,即 Base:fun();。5.下列关于 this 指针的叙述中,正确的是( )(分数:2.
29、00)A.任何与类相关的函数都有 this 指针B.类的成员函数都有 this 指针C.类的友元函数都有 this 指针D.类的非静态成员函数才有 this 指针 解析:解析 this 指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this 指针,因为类中只有一个静态成员函数实例,使用 this 指针无意义。6.( )提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。(分数:2.00
30、)A.公有成员 B.私有成员C.私有成员函数D.保护成员解析:解析 此题考查的是公有成员的特点。公有成员允许可使用者访问,提供了类对外部的接口。7.对关系 S 和 R 进行集合运算,结果中既包含 s 中的所有元组也包含 R 中的所有元组,这样的集合运算称为( )。(分数:2.00)A.并运算 B.交运算C.差运算D.积运算解析:解析 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。8.有如下程序:#includeiostreamusing namespace std;TestClass()cout“BB“;fun()void fun()cout“Bf
31、“;class TestClass1:public TestClasspublic:TestClass1()cout“DD“;void fun()cout“Df“;int main()TestClass1 d; return 0;执行上面的程序将输出( )。(分数:2.00)A.BBBfDD B.BBDfDDDfC.DDD.DDBBBf解析:解析 TestClass 是 TestClass1 的基类。由主函数 main 入手,定义 TestClass1 的对象 d,调用基类 TestClass 构造函数输出 BB,调用基类成员函数 fun 输出 Bf,然后调用派生类的构造函数,输出DD。9.关
32、于运算符重载,下列表述中正确的是( )。(分数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型 D.可以通过运算符重载来创建 C+中原来没有的运算符解析:解析 此题考查的是运算符的有关概念。运算符重载是针对 C+原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、-*、:、?:这五个运算符之外,其他运算符都可以重载;在类型转换符函数的定义中不需要声明返回类型;运算符函数的返回值类型可以声明为基本数据类型:10.为了取代 C 中带参数的宏,在 C+中使用( )。(分数:2.00)A.重载函数B.内联
33、函数 C.递归函数D.友元函数解析:解析 此题考查的是内联函数。C+语言引入内联函数的原因是用它来取代 C 语言的预处理宏函数。11.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:2.00)A.DB 包括:DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括 DB 和 DBMS D.没有任何关系解析:解析 数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、硬件平台和软件平台 5 个部分组成,可见 DB 和 DBMS 都是 DBS 的组成部分。12.有如下程序:#includeiostreamusing
34、namespace std;long fun(int n)if(n2)return(fun(n-1)+fun(n-2);return 2;int main()coutfun(3)end1;return 0;则该程序的输出结果应该是( )。(分数:2.00)A.2B.3C.4 D.5解析:解析 主函数中调用 fun(3),在 fun 内部当 n2 时递归调用 fun(n-1)+fun(n-2),否则返回 2。所以当 n=3 时,调用 fun(2)+fun(1),即返回 2+2,等于 4。13.静态数据成员是为( )的数据。(分数:2.00)A.私有B.保护C.所有对象共享 D.类成员解析:解析
35、静态数据成员是一种特殊的数据成员。静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。所有对象共享这些静态数据成员,都可以引用它。14.建立 E-R 模型的工作,属于软件生命周期中的( )。(分数:2.00)A.需求分析阶段B.设计阶段 C.编码阶段D.测试阶段解析:解析 建立 E-R 模型是数据库概念设计的重要内容,而概念设计是设计阶段的组成部分。15.一间教室可坐多名学生,则实体教室和学生之间的联系是( )。(分数:2.00)A.一对一B.一对多 C.多对一D.多对多解析:解析 两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对一的联系和多对多的联系
36、。由于一间教室可以坐多个学生,所以它们的联系是一对多联系。16.下列程序的输出结果是( )。#includeiostreamusing namespace std;templateT fun(T a,T b)return(a=b)?a:b;void main()coutfun(3,6),fun(3.14F,6.28F)end1;(分数:2.00)A.6 ,3.14B.3,6.28C.3,3.14D.6,6.28 解析:解析 “?:”为条件运算符,(a=b)?a:b 是当 a 大于 b 时取 a,否则取 b。所以第一个 fun(3,6)调用中,6 大于 3,所以输出 6,同理第二个 fun(3.
37、14F 6.28F)调用中输出 6.28。17.有如下类声明:class Foo int bar;则 Foo 类的成员 bar 是( )。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析 此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字,所有成员默认定义为 private 私有权限。18.下列程序中横线处正确的语句是( )。#includeiostreamusing namespace std;class TestClasspublic:void fun()cout“TestClass:fun“end1;class TestClass
38、1:public TestClassvoid fun()_/显示调用基类的函数 fun()cout“TestClass1:fun“end1;;(分数:2.00)A.fun();B.TestClass.fun()C.TestClass:fun(); D.TestClass-fun();解析:解析 程序中的 TestClass1 为 TestClass 的派生类,TestClass1 公有继承 TestClass,所以可以调用其中的公有成员 fun 函数,如果要显示调用它,那么使用域符号“:”,这样就实现了对函数的显示调用,即选择 C)。19.有如下程序:#includeiostream.husi
39、ng namespace std;class TestClasspublic:TestClass ()cout“default constructor/n“;TestClass(const TestClass TestClass userCode(TestClass b)TestClass c(b);return c;int main()TestClass a,d;cout“calling userCode()/n“;d=userCode((分数:2.00)A.;return 0;void add(int X,int y,int *z)*z=y+x;int main()int a,b,c;ad
40、d(8,4,add(6,a,add(a,b,couta“,“b“,解析:解析 由主函数 main 入手,调用 add 函数,其中第三个参数为引用,即传值为地址。当 add 函数中第三个参数改变时,主函数中这个值也会改变。那么第一个 add 调用后 a=12,所以第二个调用中a=12。调用后 b=18。那么第三个调用后 c=30。26.算法分析的目的是( )。(分数:2.00)A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进 解析:解析 算法是指对解题方案准确而完整的描述,而对算法进行分析的目的,是为了在原有的基础上,对算法进行改进
41、,从而提高对数据的处理效率。27.在下面的类定义中,错误的语句是( )。class Samplepublic:Sample(int val): /Sample(); /private:int a=2.5; /Sample(): /;(分数:2.00)A.B.C. D.解析:解析 是错误的,因为在类体内,不允许对所定义的数据成员进行初始化;其他语句构造和析构函数的定义都是正确的。28.若类 A 和类 B 的定义如下:#includemalloc.hclass Aint i,j;public:int geti()return i;class B: public Aint k;public:void
42、 make()k=i,j;);则上述定义中非法的表达式是( )。(分数:2.00)A.k=i*j; B.int k;C.return i;D.void make();解析:解析 因为派生类不能访问基类的私有成员 i 和 j(默认情况下,成员的属性为私有),所以表达式 k=i*j 是非法的。其余的访问权限都是许可的。29.有如下函数模板定义:templateT1 sum(T1 a1)return(a1+a2+a3);则以下调用中正确的是( )。(分数:2.00)A.sumint,4,3(5); B.sum4,3(5);C.sumint,int,int(5);D.sum(5);解析:解析 本题考查
43、的函数模板的使用,有时不能根据用户传进来的参数决定所有模板函数的值类型,如函数的返回值,还有用户希望自己指定参数类型,这时就需要显式地指出参数模板的类型,显示指定模板的类型格式为:返回值类型函数模板参数类型表(参数表)。30.线性表常采用的两种存储结构是( )。(分数:2.00)A.顺序存储结构和链式存储结构 B.散列方法和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构解析:解析 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。31.有如下类的定义。横线处的语句是( )。class MyClasspublic:MyClass(int a=0,int b=0)X=a
44、;Y=b;void Change()constX-=10;Y+=10;private:_intX, Y;(分数:2.00)A.staticB.constC.mutable D.不需要填入内容解析:解析 C+中 const 关键字用来表示一个常量,同时 const 也用来修饰函数。这两个概念需要明确:const 所修饰的函数只能是类的成员函数,因为 const 所修饰的函数中,要由编译器负责保护类的成员变量不被修改。而相对的,mutable 则是用来修饰类的成员变量,让该变量在 const 所修饰的成员函数中可以被修改。而且 const 修饰的函数只能是类的成员函数,mutable 修饰的变量只
45、能是类的成员变量。32.针对数组定义 int data10;,下列表述中错误的是( )。(分数:2.00)A.用*data 可访问到数组的首元素B.用 data9可访问到数组的末元素C.用 data10访问数组元素会超出数组边界D.data 共有 10 个元素,其首元素是 data1 解析:解析 此题考查的是数组和指针的概念。题目中 data10共有 10 个元素,分别是 data0、data1、data2、data3data9,首元素是 data0,所以选项 D)错误;其他选项均正确。33.假定 MyClass 为一个类,则该类的拷贝初始化构造函数的声明语句为( )。(分数:2.00)A.M
46、yClassB.MyClass(MyClass x)C.MyClass(MyClass D.MyClass(MyClass *x)解析:解析 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名(const 类名public:TestClass(int r1,int r2)R1=r1;R2=r2;void print();void print() const;private;int R1,R2;void TestClass:print()coutR1“,“R2end1;void Testclass:print() constcoutR1“
47、,“R2end1;int main()TestClass a(5,4);const TestClass b(20,52);b.print();return 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.20,52 C.0,0D.4,5解析:解析 常对象只能调用其中的 const 成员函数,即“const TestClass b(20,52);”只能调用“void print() const;”。常对象保证所有数据成员的数值不被修改,所以这里是 20,52。二、填空题(总题数:15,分数:30.00)36.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。(分数:2.00)填空项