还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
南开大学理科《面向对象程序设计》2-2级期末考试试卷(卷)年月2007A20086任课教师学院系别(班级)姓名学号题号----四合计*B成绩—、单项选择(每空1分,共20分)(结果必须填写在题头相应横线上)注意请将选择题结果写在下面相应位置上:123456789⑩11⑫1314⑮161718⑲⑳、下列关于构造函数说法不正确的是()1)构造函数必须与类同名A)构造函数可以省略不写B)构造函数必须有返回值C)在构造函数中可以对类中的成员进行初始化D、任意一个类,析构函数的个数最多是()2oA)不限个数(B)1(C)2(D)
3、友元的作用是()3)增减成员函数的种类)加强类的封装性A B)实现数据的隐藏)提高程序的运行效率C D、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确4的是()o)派生类的对象可以直接访问基类的所有成员A)派生类的对象可以初始化基类的引用B)派生类的对象不可以直接访问基类中的私有成员C};4void Tennisclub::visitPerson x姓名:cout x.namevendl;年龄:cout x.agevendl;coutv可以使用的俱乐部:n«club«endl;cout«n介绍人:name«endl;void main明星俱乐部李晓明TennisClub aJ张静Person b\28;a.visitb;、文件中有个字符,下面的程序将文件的内容复制到文件2filel.txt10filel.txt中请将程序补充完整本题共分,每空分file
2.txt123#includeiostream.h5using namespacestd;#includefstream.h#includestdlib.hvoid mainfstreaminfile,outfile;infile.opennfilel.txtn,ios::in;if!infilecout«filel.txt cantopen.\nn;abort;6outfile.openC6file
2.txf\iso::outif!outfile{cout«nfile
2.txt cantopen Ann;abort;}char ch;forint i=0;i10;i++〉〉〃写入内存infile ch;cout«ch;7return0;写入文件Outfile«ch;⑻infile.close;outfile.close;、请将下面的程序补充完整,使得函数具有多态性本题分,⑼、3fun10空每空分,⑩、空每空分⑫3112#include iostream.h#include math.hclass Powerpublic:Powerint i{x=i;}9virtual funpower;Virtual void display{};protected:int x;;class Square:public Power{public:10funPower;Squareint i:Poweri{}void displayO{cout«nx=H«x«endl;cout«nx square=1*«x*x«endl;;11class Cube:public Power public:Cubeint i:Poweri{}void displayO{cout«Hx=*«x«endl;cout«Hx cube=n«x*x*x«endl;};void fun12{Power pp.displayO;void main{Square squ2;Cube cub3;funsqu;funcub;级期末考试试卷(卷)答案2007A
一、单项选择(每空1分,共20分)CBDAD CDDAA CCBDD DBBAD
二、判断题(每空1分,共10分)FTFTT FFFTT
三、读程序写结果(共36分)⑴x=0,y=0⑵x=2,y=33x!=y4x=y⑸n=106n=30⑺s=5⑻a=-69s=0⑩c=T
(11)Hello⑫50()13OK!、程序填空(每空2至3分,共34分)1class TennisClub⑵TennisClub⑶friend classTennisClub;或friend TennisClub;分号可有可无4void TennisClub::visitPerson x5#includefstream.h6outfile.opennfile
2.txtH,ios::out;⑺outfilevvch;⑻infile.closeQ;9virtual void displayQ{};10Squareint i:Poweri{}11class Cube:public Power12Powerp)派生类的对象的地址可以赋给指向基类的指针D、下面对静态数据成员的描述中,正确的是()5)静态数据成员可以在类体内进行初始化A)静态数据成员不可以被该类的对象调用B)静态数据成员不能受控制符的作用C private)静态数据成员可以直接用类名访问D、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并6执行其他内部管理操作的函数是()o)友元函数)虚函数)构造函数)析构函数A BC D、下列对派生类的描述中错误的是()7)派生类至少有一个基类A)派生类可作为另一个派生类的基类B)派生类除了包含它直接定义的成员外,还包含其基类的成员C)派生类对其继承的基类的成员访问权限保持不变D、下列关于指针的说法,正确的是()8this)指针一定指向常量型数据A this)指向的数据不可更改B this)静态成员函数中也可以访问指针C this)指针本身可直接作为成员函数的返回值D this、下面关于类的成员函数描述不正确的是()9)静态成员函数内可以直接访问类的非静态成员数据A)静态成员函数内可以直接访问类的静态成员数据B)非静态成员函数可以直接访问类的非静态成员数据C)非静态成员函数可以直接访问类的静态成员数据D、下列关于类和对象的叙述中,错误的是()10)一个类只能有一个对象A)对象是类的具体实例B)类是某一类对象的抽象C)类和对象的关系是一种数据类型与变量的关系D、有如下类声明11class Sample{int x;};则类成员是类的()Sample xSample)公有数据成员)保护数据成员A B)私有数据成员)以上选项都不正确C D、在表达式中,+是作为成员函数重载的运算符,*是作为非成员函数重12x+y*z载的运算符下列叙述中正确的是()o)有两个参数,有两个参数A operator+operator*)有两个参数,有一个参数B operator+operator*)有一个参数,有两个参数C operator+operator*)有一个参数,有一个参数、下列关于虚函数的说明中,D operator+operator*13)从虚基类继承的函数都是虚函数)虚函数不得是静态成员函数A B正确的是()o)只能通过指针或引用调用虚函数)抽象类中的成员函数都是虚函数C D、类模板的模板参数()14oA)只可作为数据成员的类型B)只可作为成员的返回类型)只可作为成员函数的参数类型、C15)以上项均可以D3下列关于运算符重载的描述中,正确的是()o)运算符重载可以改变操作数的个数A)运算符重载可以改变运算符的优先级B)运算符重载可以改变运算符的结合性C)运算符重载可以使运算符实现特殊功能D、已知是一个输出流对象,要想将的文件指针定位到当前位置之16outfile outfile前个字节处,正确的函数调用语句是()321)())()A outfile.seekp321,ios::cur;B outfile.seekp321,ios::beg;)())()C outfile.seekp-321,ios::beg;D outfile.seekp-321,ios::cur;、下面描述中,错误的是()17B0)公有继承时,基类中的成员在派生类中仍是的A publicpublic)公有继承时,基类中的成员在派生类中仍是的B privateprivate)公有继承时,基类中的成员在派生类中仍是的C protectedprotected)私有继承时,基类中的成员在派生类中是的D publicprivate、派生类构造函数的调用顺序是先调用()18)派生类的构造函数)基类的构造函数A B)派生类的析构函数)基类的析构函数C D、对于拷贝构造函数,正确的描述是()19o)在语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝AC++构造函数)必须为每个类定义拷贝构造函数B)如果要使用拷贝构造函数,则必须在类中先定义C)当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造D函数、对于语句<〈中的各个组成部分,下列叙述中错误的是20cout«endl x;())是一个输出流对象)的作用是输出回车换行A“cout”B“endl”)是一个变量)”称作提取运算符C“x”D
二、判断题(每空1分,共10分)(注意把答案写在题头相应堂3横线上!答案T表示正确,F表示错误)----------1注意请将判断题结果(正确为T,错误为F)写在下面相应位置上()()()()()12345()()()()()
678910、在中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类1C++派生()F、抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类2继承()T、一个类模板可以先建立对象,再实例化为相应的模板类,然后使用这个模板3类()F、一个类的静态数据成员被该类的所有对象共享()4T、基类类型的指针可以指向其派生类对象()5T、任何类都要有不必提供参数的构造函数(默认缺省构造函数)()、6T F7私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问()T F、在中,可以声明虚构造函数和虚析构函数()8C++T F、类中所提供的成员函数可以直接访问该类的私有成员()9T、抽象类不能定义对象,但可以声明抽象类的指针或引用()10T线上!)注意请将程序运行的结果写在下面相应位置上()()12567811⑫13____________________________、写出下面程序的运行结果本题分,每空分1123#includeiostream.hclass Sampleintx,y;public:Sample{x=y=O;}Sampleint a,int b{x=a;y=b;}〜Sample{ifx-y cout«Hx=yn«endl;else cout«nx!=yn«endl;}voiddisp{cout«nx=H«x«n,y=n«y«endl;}};void mainSample si;Sample*ps2=new Sample2,3;sl.dispO;ps2-disp;delete ps2;1x=0,y=02x=2,y=33x!=y4x=y、写出下面程序的运行结果本题分,每空分263#includeiostream.hclass Samplepublic:Sample{}Sampleint i{n=i;}friend Sample operator-Sample,Sample;friend Sample operator+Samp1e,Sample;voiddisp{cout«nn=n«n«endl;}private:int n;;Sampleoperator-Sample sl,Sample s2int m=sl.n-s
2.n;Sample tmpm;return tmp;}Sampleoperator+Sample sl,Samples2{int m=sl.n+s
2.n;Sample tmpm;return tmp;void main{Sample sl10,s220,s3;s3=s2-sl;s
3.disp;s3=s2+sl;s
3.disp;5n=106n=
30、写出下面程序的运行结果本题分,每空分3123#include iostream.htemplate classType TypefType x[],int ninti,s=0;Type tmp=x[0J;fori=1;in;i++{ifx[i]tmp tmp=x[i];ifx[i]x
[0]s++;cout«ns=«s«endl;return tmp;void main{int a[]={l,3,-6,9,2,25,44,-1,51,19};char c[]={b,T,a「A「Y;k};cout«na=«fa,8«endl;cout«nc=n«fc,3endl;7s=78a=-69s=010b=T、写出下面程序的运行结果本题分,每空分462#includeiostream.hconst intN=100;class CStack{public:CStack{top=0;cout«HHelloH«endl;}〜CStack{cout«HByen;}void pushint i;int pop;private:int stack[N];int top;;void CStack::pushinti{iftop==N cout«nOverflown;else{top++;stack[top]=i;}int CStack::pop{int temp;if top==0{cout«nUnderflown;return0;else{temp=stack[topj;top-;return temp;void main{CStack*ptr=new CStack;ptr-push10;ptr-push50;cout«ptr-pop««endl;;cout«nOK!n«endl;运行结果为11Hello⑫OK!5013BYE!OK!在题头相应的横线上!
四、程序填空每空2至3分,共34分注意将结果写注意请将填空结果写在下面相应位置上123456⑺⑻⑼1011⑫、下面的程序定义了两个类,一个是其成员数据有俱乐部和会员名,1TennisClub,另一个是其成员数据有姓名和年龄,类的成员函数可以Person,TennisClub visit显示姓名、年龄、俱乐部名、会员名其中类是类的友类请TennisClub Person将程序补充完整本题共分,每空分123#includestring.h#includeiostream.hclass Person;1class Tennisclubpublic:2Tennnisclubchar*p,char*q{strcpyclub,p;strcpyname,q;void visitPerson;private:char club
[24];char name
[24];;class Personpublic:Personchar*p,int y{strcpyname,p;age=y;}3friend voidTennisclub::visitPerson;Friend classTennisclub;private:char name[241;int age;。