402096C++程序设计习题集.docx
- 文档编号:25854074
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:39
- 大小:25.38KB
402096C++程序设计习题集.docx
《402096C++程序设计习题集.docx》由会员分享,可在线阅读,更多相关《402096C++程序设计习题集.docx(39页珍藏版)》请在冰豆网上搜索。
402096C++程序设计习题集
402-096-C++程序设计习题集
上机题:
先定义“高度”类Hight和“圆”类Circle,再由Hight和Circle多重派生出“圆柱体”类Cylinder。
在主函数中定义一个圆柱体对象,调用成员函数求出圆柱体的体积和表面积。
第一部分:
一(选择填空题
1(类成员缺省的访问特征是_C_,结构体缺省的访问权限是__B_.
A.protectedB.publicC.privateD.friend
2(下列关于类的成员的访问特征的描述中,正确的___
A.必须首先说明具有私有特征的成员
B.数据成员必须说明成私有的,成员函数必须说明成私有的
C.每个成员前都必须有标明访问特性的关键字
D.在同一类中,说明访问特性的关键字可以多次使用
3(关于类和对象,下列说法不正确的是___
A.类与对象的关系类似于数据类型与变量的关系
B.对象是类的一个实例
C.任何一个对象必定属于一个特定的类
D.一个类只能有一个对象
4(关于类的一个成员函数,下列说法中正确的是()
A.必须在类内定义B.一定是内联函数
C.不可以重载D.可以设置参数的缺省植
5(以下不可以作为类的成员的是()
A.自身类对象的指针B.自身类的对象
C.自身类对象的引用D.另一个类对象的引用6(已知一个类,类名为A,可以定义A类的对象或定义A类的指针,下列
一定不正确的形式为____
A.Aa1B.Aa2(16)
C.AA3()D.A*P=newA
7.已知一个类COMPLEX,有下述两行:
Complexc;//A
Complexc()//B
以下描述中错误的是___
A.A行定义了一个对象,并调用缺省的构造函数
B.B行定义了一个对象,并调用缺省的构造函数
C.B行是一个函数的原型说明,函数名为C,函数没有参数,返回值
类型是Complex
D.A行和B行两行的意义不一样
8.设有下列对象定义;
classA
{
public:
inta,b;
}a1={1,2},a2,a3;
class
{
public:
inta,b;
}a4;
则以下正确的定义或赋值形式是___
A.a3=a2=a1;B.a4=a1;C.A*p=&a4;D.A&re=a4
9.下列描述中,___不是构造函数的特征
A.构造函数可以重载
B.必须显示为类定义一个构造函数
C.无须为构造函数指定返回值类型
D.构造函数在产生对象时由系统自己调用
10.下列有关析构函数的描述中,正确的是___A.析构函数的定义只能在类体内
B.析构函数可以有一个或多个参数
C.析构函数是在撤消对象时,系统自动调用的D.析构函数可以重载
11.以下关于构造函数和析构函数的描述中错误的是___
A.用户不定义缺省的构造函数,则系统自动生成一个缺省的构造函数
B.若用户不定义拷贝的构造函数,则系统自动生成一个拷贝的构造函数
C.若用户不定义析构函数,则系统自动生成一个析构函数
D.以上A错误,而B,C正确
12.定义复数类如下;
classComplex
{doublereal,image;
public:
Complex(doubler=0,doublei=0){real=r;image=i;}
Complex(Complex&c){real=c.real;image=c.image;}
};
若有Complexc1;//A
Complexc2(3,5);//B
Complexc3(c2);//C
c2=c1;//D则下列描述中正确的是___
A.C行和D行均调用了拷贝构造函数
B.C行调用了拷贝构造函数
C.B行调用了拷贝构造函数
D.A行调用了拷贝构造函数
13.classA
{intx,inty;
public;
A(inta,intb){x=a;y=b;}
voidshow(){cout< ? < voidset(inta,intb){x=a;y=b;} }; voidmain() {Aobj; obj.set(3,5); obj.show(); } 对上述过程段,以下说法中,正确的是___A.编译时报错,程序无法运行 B.编译时无错,运行正常,输出3,5C.编译无错,运行时报错 D.编译时报警告错,但运行正常,输出3,5 14(在下列程序中,C类的数据成员中有一个A类对象和一个B类对象。 #include {inta; public: A(intx=10){a=x;} intGetA(){returna;} }; classB {intb; public: B(intx){b=x;} intGetB(){returnb;} }; classC{ intc; Aaobj; Bbobj; public: C(intx,inty,intz): aobj(y),bobj(z)//E {c=x;} voidPrint() {cout< \t? < \t? < }; voidmain() { Ccobj(3,6,8); cobj.Print(); } 程序在E行定义了构造函数,如果将该行改为下列中______选项 时,便会出现编译错误。 A.C(intx,inty,intz): aobj(z),bobj(y) B.C(intx,inty,intz): bobj(z) C.C(intx,inty,intz): aobj(y) D.C(intx,inty,intz): aobj(x),bobj(y+z) 二(找错,运行结果 1.指出下列程序的错误: #include classA {intx,y; public: A(){x=y=0;} A(inti=0,intj=0){x=i,y=j;} voidshow(){cout< ? < }; voidmain() { Aa1,a2(6,8);错误: //该程序有两个默认的构造函数 a1.show(); a2.show(); } 2.写出下列程序的运行结果: #include classA {intx,y; public: A(){x=y=0;cout<<”Defaultconstructorcalled.\n;} A(inti,intj) {x=i,y=jcout< ~A(){show();cout<<”Destructorcalled.\n”;} voidshow(){cout< ? < }; voidmain() {Aa1,a2(6,8); a1.show(); a2.show(); } Defaultconstructorcalled. constructorcalled. 0,0 6,8 6,8 Destructorcalled. 0,0 Destructorcalled. 3.根据以下两个方框中的内容,写出两个版本的运行结果: #include classA {intx,y; public: A(inti=0,intj=0) {x=i;y=j; show(); cout<<”Constructorcalled.\n”; } A(A&a); ~A(){show();cout<<”Destructorcalled.\n”;} voidset(inti=0,intj=0){x=i;y=j;} voidshow(){cout< ? < ? ;} }; A: : A(A&a) {x=a.x;y=a.y;show();cout<<”Copyconstructorcalled.\n”;} A&fun(A&a)Afun(Aa) {a.show();{a.show(); cout< a.set(3,7);a.set(3,7); returna;returna; }} voidmain() {Aa1,a2(6,8),a3(a2),a4; a4=fun(a3); a4.Show(); a3.Show(); cout< } 左边的答案: 0,0,Constructorcalled.6,8,Constructorcalled.6,8,Copyconstructorcalled.0,0,Constructorcalled.6,8,Copyconstructorcalled.6,8, 3,7,Copyconstructorcalled.3,7,Destructorcalled.3,7,Destructorcalled.3,7,6,8, 3,7,Destructorcalled.6,8,Destructorcalled.6,8,Destructorcalled.0,0,Destructorcalled.右边的答案: 0,0,Constructorcalled.6,8,Constructorcalled.6,8,Copyconstructorcalled.0,0,Constructorcalled.6,8, 3,7,3,7, 3,7,Destructorcalled.3,7,Destructorcalled.6,8,Destructorcalled.0,0,Destructorcalled.4.写出下列程序的运行结果 include {intx,y; public: A(inti=0,intj=0) {x=i,y=j;Show();cout<<”constructorcalled.\n”} ~A(){Show();cout<<”destructorcalled.\n”;} voidSet(inti=0,intj=0){x=i,y=j;} voidShow(){cout< ? < A&fun(A&a){a.Show(); cout< a.Set(3,7); returna;} voidmain(){Aa1,a2(6,8),a3(a2),a4=a1; a4=fun(a3); a4.show(); cout< } 0,0,constructorcalled.6,8,constructorcalled.6,8, 3,7, 3,7,destructorcalled.3,7,destructorcalled.6,8,destructorcalled.0,0,destructorcalled.5.写出下列程序的运行结果 #include {intreal,image;public: Complex(intx=0,inty=0){real=x;image=y; Show(); cout<<”construct\n”; } ~Complex() {Show();cout< destruct\n.”;} voidShow() {cout< („< ? < )? ;}voidPrint() {Show();cout< voidmain() {Complexc[5]={3,Complex(4),Complex(),Complex(5,6)}; for(inti=0;i<5;i++)c[i].Print(); cout<<”exitmain()\n”; } (3,0)construct (4,0)construct (0,0)construct (5,6)construct (0,0)construct (3,0) (4,0) (0,0) (5,6) (0,0) exitmain() (0,0)destruct .(5,6)destruct .(0,0)destruct .(4,0)destruct .(3,0)destruct 6(写出下列程序的运行结果 #include classTest {intx; public: Test(inti=0){x=i;}voidprint() {cout< .? < voidmain() {Testt1(8),t2(9); cout<<&t1< ? <<&t2< t1.print();//B t2print();//C } 若A行的输出是0x0012FF7C,0X0012FF78,则B行和C行的输出是_8.0012FF7C,9_.0X0012FF78_______________________ 7.写出下列程序的运行结果 #include { inta[10],n; public: List(inta[10],intn){ List: : n=n;//List: : n表示数据成员n,以便与参数n区别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 402096 C+ 程序设计 习题集