您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象期末试卷-A(答案)
得分阅卷人得分阅卷人得分阅卷人************************************************班级:******************************学号:************************************姓名:************************************共3页第1页考试方式制卷份数题号一二三四总分得分分人核分人一.单项选择题(本大题共15小题,每小题3分,共45分)1.关于C++与C语言关系的描述中,()是错误的。(D)A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2.在下列关键字中,用于说明类中公有成员的是__.(A)A.publicB.privateC.protectedD.friend3.如果编程者没有显式定义构造函数(包括复制构造函数),C++编译器就___。(D)A.出现编译错误B.没有构造函数C.必须显示定义D.隐式定义缺省的构造函数4.关于成员函数特征的下述描述中,___是错误的。(A)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的缺省值D.成员函数可以是静态的5.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的(D)。A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.具有任何权限的成员6.派生类的成员函数可以直接访问基类的()成员。(B)A.所有B.公有和保护C.保护和私有D.私有7.关于运算符重载,下列说法正确的是()。(C)A.重载时,运算符的优先级可以改变。B.重载时,运算符的结合性可以改变。C.重载时,运算符的功能可以改变。D.重载时,运算符的操作数个数可以改变。8.对类对象成员的初始化是通过构造函数中给出的()实现的。(B)A.函数体B.初始化表C.参数表D.初始化表或函数体9.在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。(B)A.0B.1C.2D.310.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。(A)A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)11.当派生类中有和基类一样名字的成员时,一般来说,()。(B)A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员12.下列对派生类的描述中错误的说法是:()。(D)A.派生类至少有一个基类B.派生类可作为另一个派生类的基类C.派生类除了包含它直接定义的成员外,还包含其基类的成员D.派生类所继承的基类成员的访问权限保持不变13.类的析构函数是一个对象被()时自动调用的。(B)A.建立B.撤消C.赋值D.引用14.静态成员函数仅能访问___。(A)A.静态的数据成员B.非静态的成员函数C.非静态的数据成员D.以上都不对15.在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。(A)A.内联函数B.重载函数C.递归调用D.嵌套调用二.填空题(本大题共5小题,每小题3分,共15分)1.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。2.在面向对象的程序设计中,通过_封装_实现数据隐藏;通过_继承_实现代码的复用。3.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。4.类是用户定义的类型,具有类类型的变量称作对象。5.在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变。三.程序填空题.(本大题共2小题,共21分)得分阅卷人************************************************班级:******************************学号:************************************姓名:************************************共3页第21.(9分)classPoint{private:intx,y;public:Point(){x=y=0;}Point(intx0,inty0){x=x0;y=y0;}intGetX(){returnx;}intGetY(){returny;}voidPrint(){coutPoint(x,y)endl;}___(1)___;//友元函数声明___(2)___;//友元函数声明};Pointoperator+(Point&pt,intdd)//加号操作符重载函数,实现Point类对象与整数加法{Pointtemp=pt;temp.x+=dd;temp.y+=dd;returntemp;}Pointoperator+(Point&pt1,Point&pt2)//加号操作符重载函数,实现两个Point类对象的加法{Pointtemp=pt1;temp.x+=pt2.x;___(3)___;returntemp;}答案:(1)friendPointoperator+(Point&pt,intdd)----3分(2)friendPointoperator+(Point&pt1,Point&pt2)----3分(3)temp.y+=pt2.y----3分2.(12分)已知一个类的定义如下:#includeiostream.hclassAA{private:inta[10];intn;public:voidSetA(intaa[],intnn);//用数组aa初始化数据成员a,用nn初始化数据成员nintMaxA();//从数组a中前n个元素中查找最大值voidSortA();//采用选择排序的方法对数组a中前n个元素进行从小到大排序voidInsertA();//采用插入排序的方法对数组a中前n个元素进行从小到大排序voidPrintA();//依次输出数组a中的前n个元素};该类中InsertA()函数的实现如下,请在标号位置补充适当的内容。void___(1)___{inti,j;for(i=1;in;i++){intx=a[i];for(j=i-1;j=0;j--)if(xa[j])___(2)___;else___(3)___;a[j+1]=x;}}使用该类的主函数如下:voidmain(){inta[10]={23,78,46,55,62,76,90,25,38,42};AAx;x.SetA(a,6);intm=___(4)___;x.PrintA();coutmendl;}该程序运行结果为:23784655627678答案:(1)AA::InsertA()----3分(2)a[j+1]=a[j]----3分(3)break2.----3分(4)x.MaxA()----3分四.程序设计题.(本大题共1小题,共19分)分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:(1)在两个基类中都包含name(姓名)、age(年龄)、sex(性别)、addr(地址)、tel(电话)等数据成员。(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher_Cadre类中还包含数据成员wages(工资)。(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。(4)在类体中声明成员函数,在类外定义成员函数。(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务和工资。#includestring#includeiostreamusingnamespacestd;classTeacher{public:Teacher(stringnam,inta,chars,stringtit,stringad,stringt);voiddisplay();protected:stringname;intage;charsex;stringtitle;stringaddr;stringtel;};----3分Teacher::Teacher(stringnam,inta,chars,stringtit,stringad,stringt):name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){}voidTeacher::display(){coutname:nameendl;coutageageendl;coutsex:sexendl;couttitle:titleendl;coutaddress:addrendl;couttel:telendl;}----3分classCadre{public:Cadre(stringnam,inta,chars,stringp,stringad,stringt);voiddisplay();protected:stringname;intage;charsex;stringpost;stringaddr;stringtel;};----3分Cadre::Cadre(stringnam,inta,chars,stringp,stringad,stringt):name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}voidCadre::display(){coutname:nameendl;coutage:ageendl;coutsex:sexendl;coutpost:postendl;coutaddress:addrendl;couttel:telendl;}----3分classTeacher_Cadre:publicTeacher,publicCadre{public:Teacher_Cadre(stringnam,inta,chars,stringtit,stringp,stringad,stringt,floatw);voidshow();private:floatwage;};----2分Teacher_Cadre::Teacher_Cadre(stringnam,inta,chars,stringt,stringp,stringad,stringtel,floatw):Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w){}voidTeacher_Cadre::show(){Teacher::display();coutpost:Cadre::postendl;coutwages:wageendl;}----3分intmain(){Teacher_Cadrete_ca(Wang-li,50,'f',prof.,president,135BeijingRoad,Shanghai,(021)61234567,1534.5);te_ca.show();return0;}----2分共3页第3页
本文标题:面向对象期末试卷-A(答案)
链接地址:https://www.777doc.com/doc-6719522 .html