您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++程序设计习题集
上机题:先定义“高度”类Hight和“圆”类Circle,再由Hight和Circle多重派生出“圆柱体”类Cylinder。在主函数中定义一个圆柱体对象,调用成员函数求出圆柱体的体积和表面积。第一部分:一.选择填空题1.类成员缺省的访问特征是_C_,结构体缺省的访问权限是__B_.A.protectedB.publicC.privateD.friend2.下列关于类的成员的访问特征的描述中,正确的___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=newA7.已知一个类COMPLEX,有下述两行:Complexc;//AComplexc()//B以下描述中错误的是___A.A行定义了一个对象,并调用缺省的构造函数B.B行定义了一个对象,并调用缺省的构造函数C.B行是一个函数的原型说明,函数名为C,函数没有参数,返回值类型是ComplexD.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=a49.下列描述中,___不是构造函数的特征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;//AComplexc2(3,5);//BComplexc3(c2);//Cc2=c1;//D则下列描述中正确的是___A.C行和D行均调用了拷贝构造函数B.C行调用了拷贝构造函数C.B行调用了拷贝构造函数D.A行调用了拷贝构造函数13.classA{intx,inty;public;A(inta,intb){x=a;y=b;}voidshow(){coutx’,’yendl;}voidset(inta,intb){x=a;y=b;}};voidmain(){Aobj;obj.set(3,5);obj.show();}对上述过程段,以下说法中,正确的是___A.编译时报错,程序无法运行B.编译时无错,运行正常,输出3,5C.编译无错,运行时报错D.编译时报警告错,但运行正常,输出3,514.在下列程序中,C类的数据成员中有一个A类对象和一个B类对象。#includeiostream.hclassA{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(){coutaobj.GetA()’\t’bobj.GetB()’\t’cendl;}};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.指出下列程序的错误:#includeiostream.hclassA{intx,y;public:A(){x=y=0;}A(inti=0,intj=0){x=i,y=j;}voidshow(){coutx’,’yendl;}};voidmain(){Aa1,a2(6,8);错误://该程序有两个默认的构造函数a1.show();a2.show();}2.写出下列程序的运行结果:#includeiostream.hclassA{intx,y;public:A(){x=y=0;cout”Defaultconstructorcalled.\n;}A(inti,intj){x=i,y=jcoutconstructorcalled.\n”;}~A(){show();cout”Destructorcalled.\n”;}voidshow(){coutx’,’yendl;}};voidmain(){Aa1,a2(6,8);a1.show();a2.show();}Defaultconstructorcalled.constructorcalled.0,06,86,8Destructorcalled.0,0Destructorcalled.3.根据以下两个方框中的内容,写出两个版本的运行结果:#includeiostream.hclassA{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(){coutx’,’y’,’;}};A::A(A&a){x=a.x;y=a.y;show();cout”Copyconstructorcalled.\n”;}Afun(Aa){a.show();coutendl;a.set(3,7);returna;}A&fun(A&a){a.show();coutendl;a.set(3,7);returna;}voidmain(){Aa1,a2(6,8),a3(a2),a4;a4=fun(a3);a4.Show();a3.Show();coutendl;}左边的答案: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.写出下列程序的运行结果#includeiostream.hclassA{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(){coutx’,’y‘.‘}};A&fun(A&a){a.Show();coutendl;a.Set(3,7);returna;}voidmain(){Aa1,a2(6,8),a3(a2),a4=a1;a4=fun(a3);a4.show();coutendl;}0,0,constructorcalled.6,8,constructorcalled.6,8,3,7,3,7,destructorcalled.3,7,destructorcalled.6,8,destructorcalled.0,0,destructorcalled.5.写出下列程序的运行结果#includeiostream.hclassComplex{intreal,image;public:Complex(intx=0,inty=0){real=x;image=y;Show();cout”construct\n”;}~Complex(){Show();cout’destruct\n.”;}voidShow(){cout’(‘real’,’image’)’;}voidPrint(){Show();coutendl;}};voidmain(){Complexc[5]={3,Complex(4),Complex(),Complex(5,6)};for(inti=0;i5;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)destruct6.写出下列程序的运行结果#includeiostream.hclassTest{intx;public:Test(inti=0){x=i;}voidprint(){coutx’.’thisendl;}};voidmain(){Testt1(8),t2(9);cout&t1’,’&t2endl;//At1.print();//Bt2print();//C}若A行的输出是0x0012FF7C,0X0012FF78,则B行和C行的输出是_8.0012FF7C,9_.0X0012FF78_______________________7.写出下列程序
本文标题:C++程序设计习题集
链接地址:https://www.777doc.com/doc-4529857 .html