您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计及C++-期末试卷B
1/12南京邮电大学学年第二学期《面向对象程序设计及C++》期末试卷2院(系)班级学号姓名(★温馨提醒:①这是试题纸,教师不批改,请将所有最终答案写在答题纸上②请在试题纸和答题纸上均完整填写班级、学号、姓名信息③考试结束时请将答题纸、试题纸及草稿纸一并交来谢谢合作!祝同学们取得好成绩!)一、填空题(共10分,每空1分)1、面向对象程序设计思想中的几个主要特征是:抽象和①、②、③。2、C++为类的成员函数提供了一个名字为④的指针,当创建一个对象时,系统将这种指针初始化为指向该对象。3、假设AB为一个类,则该类的拷贝构造函数的原型是⑤。4、C++中有三种继承方式,如果基类的公有成员到派生类中仍是公有成员,则应使用⑥继承方式;如果基类的保护成员到派生类中变成私有成员,则应使用⑦继承方式。5、cout是C++中的标准输出流对象,它在标准头文件⑧里定义。6、通过在虚函数参数表后加⑨,可以定义为纯虚函数。含有纯虚函数的类称为⑩。二、单选题(共20分,每题2分)1、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是。A、参数的个数B、参数的类型C、参数的顺序D、函数的返回类型2、下列定义引用类型变量时,是正确的。已知:intk=1000;A、int&x=k;B、char&y;C、int&z=1000;D、float&t=&k;得分得分装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊2/123、下列几个运算符以类的成员函数形式重载时,哪一个与其他3个的形式参数个数不一样。A、后缀++B、前缀++C、+D、/4、关于析构函数的定义,正确的是。A、析构函数可以有一个或多个参数B、析构函数返回类型是voidC、析构函数无参数,也不可重载D、析构函数体中必须有delete5、下列哪一项能声明为虚函数。A、静态函数B、友元函数C、构造函数D、析构函数6、考虑下面的函数原型:voidfun(inta,intb=7,charz='*');下面函数调用中不合法的。A、fun(5);B、fun(5,8);C、fun(5,'#');D、fun(,,'*');7、下列语句中错误的是。A、int*p=newint(10);B、int*p=newint[40](10);C、int*p=newint;D、int*p=newint[10];8、在公有派生方式下,下列叙述不正确的是。A、派生类的对象可以赋给基类的对象B、派生类对象的地址可以直接赋给指向基类的指针C、派生类的对象可以直接访问基类的成员D、派生类的对象可以初始化基类的引用9、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为_______。A、ios::inB、ios::outC、ios::trunkD、ios::binary10、设有类A和类B,其定义如下:classA{private:inti;public:A(intx){i=x;}};classB{private:Aa1,a2;intb;public:B(intx,inty,intz):a2(x),a1(y){b=z;}};在声明类B对象b1时,其数据成员a1,a2,b被初始化的顺序为______。A、a1,a2,bB、a2,a1,bC、b,a1,a2D、b,a2,a13/12三、读程题(共30分,每空2分)1、以下程序运行后的输出结果是。#includeiostream.hintx=100;voidmain(){intx=200;::x+=x;cout::xendl;}2、以下程序运行后输出的第一行是,第二行是,第三行是。#includeiostream.hclassSample{intx,y;public:Sample(inta=0,intb=0){x=a;y=b;}Sample(constSample&S){x=2*S.x;y=2*S.y;}voiddisp(){coutxyendl;}};voidf(SampleS){S.disp();}voidmain(){Samples1(2,3),s2=s1;s1.disp();s2.disp();f(s1);}得分4/123、以下程序运行后输出的第一行是,第二行是第三行是,第四行是。#includeiostream.hclassBase{public:intx;Base(intx=10){this-x=x;}voidprint(){coutBase::xisxendl;}};classDerived1:publicBase{public:voidprint(){coutDerived1::xisxendl;}};classDerived2:privateBase{public:Derived2(intx):Base(x*4){}voidprint(){coutDerived2::xisxendl;}};voidmain(){BaseobjB(20),*p;Derived1objD1;Derived2objD2(25);p=&objD1;objB.print();objD1.print();objD2.print();p-print();装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊5/12}4、以下程序运行后输出的第一行是,第二行是____。#includeiostream.hclasscord{intx;inty;public:cord(inti=0,intj=0){x=i;y=j;}voidprint(){coutx=x,y=yendl;}cordoperator++();};cordcord::operator++(){++x;++y;return*this;}voidmain(){cordobj(1,2);obj.print();++obj;obj.print();}5、以下程序运行后输出的第一行是,第二行是,第三行是。#includeiostream.htemplateclassTvoidswap(T&a,Tb){Ttemp;temp=a;a=b;b=temp;}voidmain(){inta=5,b=8;doublex=4.5,y=8.7;coutabendl;swap(a,b);coutabendl;swap(x,y);coutxyendl;装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊6/12}6、以下程序运行后输出的第一行是,第二行是。#includeiostream.h#includestring.hclassteacher;classstudent{charname[20];public:student(char*s){strcpy(name,s);}friendvoidprint(student&,teacher&);};classteacher{charname[20];public:teacher(char*s){strcpy(name,s);}friendvoidprint(student&,teacher&);};voidprint(student&a,teacher&b){coutthestudentis:a.nameendl;couttheteacheris:b.nameendl;}voidmain(){students(LiHu);teachert(WangPing);print(s,t);}四、程序填空题(共10分,每空2分)下面的程序首先从键盘输入字符串s的值,再定义ofstream流对象与D盘根目录下的输出文件file.txt建立关联。在文件打开成功后,将字符串s中的小写字母转换为大写字母,其余字符保持不变,存放到D盘根目录下的file.txt文件中。请完善程序:#includeiostream.h#includefstream.h得分7/12#includestring.hvoidmain(){chars[100];unsignedinti;coutinputthestrings:\n;①;ofstream②;if(!out){coutfileerror!endl;return;}for(i=0;istrlen(s);i++){if(③)s[i]=s[i]-32;④;}⑤;}五、编程题1(共15分)定义类Point表示一个坐标点,有两个double类型的数据成员x,y,在该类中定义构造函数和输出函数show(显示坐标点的位置)。再定义一个Point类的公有派生类Circle,其中增加一个double类型的数据成员r以表示半径,该类中定义构造函数、计算圆面积的成员函数area()和输出函数show(显示圆心的坐标点的位置、半径长度、面积大小)。主函数代码如下,并有相应的注释,请写出完整的源程序代码,主函数代码不允许修改。voidmain(){Pointp(10,20),*pt;//点的坐标为(10,20)Circlec(3,4,15);//圆心坐标为(3,4),半径为15pt=&p;pt-show();//显示点的坐标pt=&c;pt-show();//显示圆心坐标、圆的半径、圆面积}得分8/12六、编程题2(共15分)定义复数类Complex,有两个double类型的数据成员real和image,分别表示实部和虚部,请根据下列main()函数的代码完成类的定义及相应运算符的重载。具体要求:(1)定义构造函数(2)加号运算符以成员函数形式重载(3)输出流运算符以友元函数形式重载voidmain(){Complexa,b(1,2),c(3.2,7.8);coutbc;a=b+c;couta;}得分装订线内不要答题自觉遵守考试规则,诚信考试,绝不作弊9/12标准答案一、填空题(共10分,每空1分)空号答案空号答案①封装性(或封装)⑥公有(或public)②继承性(或继承)⑦私有(或private)③多态性(或多态)⑧iostream.h④this⑨=0⑤AB(constAB&);⑩抽象类说明:②③次序可任意;⑤AB(AB&);也正确,后面的分号若不写也算正确⑧iostream也正确二、单选题(共20分,每题2分)三、读程题(共30分,每空2分)题号12345678910答案DABCDDBCAA10/12四、程序填空题(共10分,每空2分)空格号答案①cins②out(d:\\file.txt)③s[i]='a'&&s[i]='z'④outs[i]⑤out.close()五、编程题1(15分)#includeiostream.h行号答案题号第一行第二行第三行第四行130022346463Base::xis20Derived1::xis10Derived2::xis100Base::xis104x=1,y=2x=2,y=3558888.78.76第一行输出thestudentis:LiHu第二行输出theteacheris:WangPing11/12classPoint{doublex,y;public:Point(doublea=0,doubleb=0){x=a;y=b;}virtualvoidshow(){cout(x,y)endl;}};classCircle:publicPoint{doubler;public:Circle(doublea,doubleb,doublec):Point(a,b){r=c;}doublearea(){return3.1415*r*r;}voidshow(){Point::show();coutr=r,area=area()endl;}};voidmain(){Pointp(10,20),*pt;//点的坐标为(10,20)Circlec(3,
本文标题:面向对象程序设计及C++-期末试卷B
链接地址:https://www.777doc.com/doc-6323841 .html