您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 面向对象程序设计C++期末考试试题
一、单项选择题下面每题的选项中,只有一个是正确的,请选择正确的答案填入答题纸中对应的题号后(本题共25小题,每小题1分,共25分)。1、当一个函数无返回值时,函数的类型应定义为()。AvoidB任意CintD无2、作用域运算符的功能是()。::A标识作用域的级别B指出作用域的范围C给定作用域的大小D标识某个成员是属于哪个类3、下列的()是引用调用。A形参是指针,实参是地址值B形参和实参都是变量C形参是数组名,实参是数组名D形参是引用,实参是变量4、()不是构造函数的特征A构造函数的名和类名相同B构造函数可以重载。C构造函数可以设置默认值D构造函数必须指定类型说明。5、下列()不能作为类的成员。A自身类对象的指针B自身类对象的引用C自身类对象D另一个类的对象6、重载函数在调用时选择的依据,()是错误的。A.参数个数B参数的类型CA或者BD函数的类型7、下列静态成员的特性中,()是错误的。A说明静态成员时,要加修饰符staticB静态数据成员要在类体外进行初始化C引用静态数据成员时,要在静态数据成员名前加类名及作用域运算符D静态数据成员不是所有对象所共用的8、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用()是正确的。Ap=f1Bp=A::f1Cp=A::f1()Dp=f1()9、运算符-*的功能是()。Aap=&apublicinti.intp2=&ip-*p2p-*p2a.iA用来表示指向对象指针对指向类成员指针的操作B用来表示对象对指向类成员指针的操作C用来表示指向对象指针对类成员的操作D用来表示对象类成员的操作10、下列定义中,()是定义指向数组的指针p.Aintp[5]Bint(*p)[5]C(int*)p[5]Dint*p[]11、设p为一个指向类A数据成员m的指针,A1为A的一个对象。如果给m赋值5,()为正确的。AA1.p=5BA1-p=5CA1.*p=5D*A1.p=512、已知print()函数是一个类的常成员函数,它无返回值。下列表示中,()是正确的。Avoidprint()constBconstvoidprint()Cvoidconstprint()Dvoidprint(const)13、说明constchar*ptr;中,ptr应该是()。A指向字符常量的指针B指向字符的常量指针C指向字符串常量的指针D指向字符串的常量指针14、派生类的对象对它的基类成员中()是可以访问的。A公有继承的公有成员B公有继承的私有成员C公有继承的保护成员D私有继承的公有成员15、下列对派生类的描述中,()是错的。A一个派生类可以作为另一个派生类的基类B派生类至少有一个基类C派生类的成员除了它自己的成员以外,还包含了它的基类成员D派生类中继承的基类成员的访问权限到派生类保持不变16、对于int*pa[5];的描述,()是正确的。Apa是一个指向数组的指针,所指向的数组是5个int型元素。Bpa是一个指向某数组中第5个元素的指针,该元素是int型变量。Cpa[5]表示某个数组的第5个元素的值。Dpa是一个具有5个元素的指针数组,每个元素是一个int型指针。17、设置虚基类的目的是()。A简化程序B消除二义性C提高运行效率D减少目标代码18、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚函数的子对象初始化()。A与虚基类下的派生类个数有关B多次C二次D一次19、下列函数中,()不能重载。A成员函数B非成员函数C析构函数D构造函数20、关于动态联编的描述中,()是错误的。A动态联编是以虚函数为基础的B动态联编是在运行时,确定所调用的函数代码的。C动态联编调用函数操作是指向对象的指针或对象引用。D动态联编是在编译时确定操作函数的。21、关于虚函数的描述中,()是正确的。A虚函数是一个非satatic类的成员函数。B虚函数是一个非成员函数。C基类中说明了虚函数后,派生类中与其对应的函数可以不必说明为虚函数。D派生类的虚函数与基类的虚函数具有不同的参数个数和类型。22、关于纯虚函数和抽象类的描述中,()是错误的。A纯虚函数是一种特殊的虚函数,它没有具体的实现。B抽象类是指含有纯虚函数的类。C一个基类中说明了纯虚函数,则其派生类不再是抽象类。D抽象类一般只能作为基类来使用。23、下列关于抽象类的使用中,()是错误的。A可以定义抽象类的对象B可以定义抽象类的指针C可以定义抽象类的引用D可以定义抽象类的派生类24、派生类的构造函数的成员初始化列表中,不能包含()。A基类的构造函数B派生类中子对象的初始化C基类的子对象的初始化D派生类中一般数据成员的初始化25、关于new运算符的下列描述中,()是错的。A它可以用来动态创建对象和对象数组;B使用它创建的对象或对象数组可以使用delete运算符删除;C使用它创建对象时要调用构造函数;D使用它创建对象数组时,必须指定初始值。二、填空题将正确的答案填入答题纸相应的题号后。(本题共3小题,5个空,每空2分,共10分)1.面向对象的程序设计有三大特征,它们是封装、(1)继承、(2)多态。2、类是用户定义的类型,具有类类型的变量称作(3)对象。3、在面向对象的程序设计中,通过(4)封装实现数据隐藏;通过(5)继承实现代码的复用。三、分析程序的执行结果题分析程序的执行结果,将结果按程序运行时输出形式填在答题纸对应的题号后(本题共5小题,每题4分,共20分)。1、#includeiostream.hclassM{public:M(){x=y=0;}M(inti,intj){x=i;y=j;}voidcopy(M*m);voidsetxy(inti,intj){x=i;y=j;}voidprint(){coutx,yendl;}private:intx,y;};voidM::copy(M*m){x=m-x;y=m-y;}voidfun(Mm1,M*m2){m1.setxy(12,15);m2-setxy(22,25);}voidmain(){Mp(5,7),q;q.copy(&p);fun(p,&q);p.print();q.print();}2、#includeiostream.hclassM{public:M(){a=b=0;}M(inti,intj){a=i;b=j;}voidprint(){couta,b\t;}private:inta,b;};voidmain(){Mm[2][4];intx=10,y=10;for(inti=0;i2;i++){for(intj=0;j4;j++){m[i][j]=M(x+=2,y+=10);}}M(*pm)[4](m);for(i=0;i2;i++){coutendl;for(intj=0;j4;j++)(*(*(pm+i)+j)).print();//用指针的方式存取数组的第ij个元素}coutendl;}3、#includeiostream.h#includestring.hclassB{public:B(char*s,doublen){strcpy(name,s);b=n;coutConstructor.\n;}B(){coutDefault\n;}~B(){coutDestructornameendl;}voidgetb(char*s,double&n){strcpy(s,name);n=b;}private:charname[80];doubleb;};voidmain(){B*p;doublen;chars[80];p=newB[3];p[0]=B(Ma,4.8);p[1]=B(Wang,3.6);p[2]=B(Li,3.1);for(inti=0;i3;i++){p[i].getb(s,n);couts,nendl;}delete[]p;}4、#includeiostream.hclassA{public:A(inti,intj){a=i;b=j;}voidMove(intx,inty){a+=x;b+=y;}voidShow(){cout(a,b)endl;}private:inta,b;};classB:publicA{public:B(inti,intj,intk,intl):A(i,j),x(k),y(l){}voidShow(){coutx,yendl;}voidfun(){Move(3,5);}voidf1(){A::Show();}private:intx,y;};voidmain(){Ae(1,2);e.Show();Bd(3,4,5,6);d.A::Show();d.B::Show();d.f1();}5、#includeiostream.hclassA{public:A(inti){a=i;coutcon.A\n;}voidprint(){coutaendl;}~A(){coutdes.A\n;}private:inta;};classB1:virtualpublicA{public:B1(inti,intj):A(i){b1=j;coutcon.B1\n;}voidprint(){A::print();coutb1endl;}~B1(){coutdes.B1\n;}private:intb1;};classB2:virtualpublicA{public:B2(inti,intj):A(i){b2=j;coutcon.B2\n;}voidprint(){A::print();coutb2endl;}~B2(){coutdes.B2\n;}private:intb2;};classC:publicB1,publicB2{public:C(inti,intj,intk,intl):B1(i,j),B2(i,k),A(i){c=l;coutcon.Cendl;}voidprint(){B1::print();B2::print();coutcendl;}~C(){coutdes.Cendl;}private:intc;};voidmain(){Cc1(5,7,3,6);c1.print();}四、程序设计题将编写的程序标上小题题号,写在答题纸上。本题共4小题,45分。1.编写一个程序,设计一个产品类Product,其定义如下:ClassProduct{char*name;//产品名称intprice;//产品单价intquantity;//剩余产品数量public:Product(char*n,intp,intq);//构造函数~Product();//析构函数voidbuy(intmoney);//购买产品voidget()const;//显示剩余产品数量};并用数据进行测试。(10分)2.以面向对象的方法设计一个类,此类包含3个私有数据:unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站当天的总收入。(10分)3.编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。(12分)4.编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派生出的三个类,都有求表面积和体积的实际定义。键盘输入radius的值后,可以输出这3种立方体的面积。(13分)PIXTEL_MMI_EBOOK_20058/PIXTEL
本文标题:面向对象程序设计C++期末考试试题
链接地址:https://www.777doc.com/doc-5721023 .html