您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计C++山师面向对象程序设计试卷A
第1页共7页学号姓名院(部)专业考试时间:2010年01月日------------------------------------------------密--------------------封----------------------线-----------------------------------------------------------------山东师范大学2009-2010学年第一学期期末考试试题(时间:120分钟共100分)课程编号:4111307课程名称:面向对象程序设计适用年级:07计本学制:4适用专业:计算机科学与技术试题类别:A考生注意事项1、第一、二、三大题写在答题纸预留的表格中上。2、第四大题写在答题纸的预留位置。3、考试结束后,务必将试卷、答题纸一并交回。一、单项选择题下面每题的选项中,只有一个是正确的,请选择正确的答案填入答题纸中对应的题号后(本题共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、运算符-*的功能是()。A用来表示指向对象指针对指向类成员指针的操作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可以定义抽象类的派生类第2页共7页学号姓名院(部)专业考试时间:2010年01月日------------------------------------------------密--------------------封----------------------线-----------------------------------------------------------------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++)第3页共7页学号姓名院(部)专业考试时间:2010年01月日------------------------------------------------密--------------------封----------------------线-----------------------------------------------------------------{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();
本文标题:面向对象程序设计C++山师面向对象程序设计试卷A
链接地址:https://www.777doc.com/doc-1980912 .html