面向对象程序设计C++试卷.pdf
《面向对象程序设计C++试卷.pdf》由会员分享,可在线阅读,更多相关《面向对象程序设计C++试卷.pdf(205页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上海大学2006-2007年秋学期试卷(B)课程名:面向对象程序设计C+学分:4学号:姓名:院系:绩一.填 空(46分)1.面向对象程序设计语言的主要特征是2-4.在面向对象程序设计中,一辆汽车有一个引擎,表现为类Automobile具有一个 Engine;喷漆设备是机器设备的一种,表现为类PaintMachine 是类 Machine 的,或对象(变量)paintMachine 是类Machine 的.5.名空间的用途是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _6.使用C+标准模板
2、库必须指定头文件,并用如下语句行指定名空间7.写一条语句,用cin读入一个in t型值到i8.写一条语句用C+方法分配一个类型double的存储空间,并把它的地址存到p tr_9.用 C+标准库,写两条语句,连接字符串,设字符串str初值“abed”,然后连接串efg”:10-13.复数类代码填空class Complexdouble real;double image;public:Complex()Complex(double r,double i)_ operator+(_(Complex v(real+u.real,image+u.image);return v;);14-15以下是读
3、数据文件的编程#include#include using namespace std;void main()(double x,y;try(ifstream fHe(“data.txt);coutx,5 t4yendl;coutvv”不能打开文件v vendl;)二.阅读程序,给出输出结果(20分)1._#include#inclu declass Student(int num;char name20;public:Student()Student(int n,char*p)num=n;strcpy(name,p);void set(int n,char*p)num=n;strcpy(na
4、me,p);void display(void)coutnum,nam eendl;);intmain()Student a(1001,liming),b(1002,zhanghua);a.displayO;b.displayO;Student c;char*temp;int num;temp=wangfei;nu m=1003;c.set(l 003,temp);c.displayO;return 0;2._#include templatevoid swapl(T a,T b)T temp=a;a=b;b=temp;templatevoid swap2(T&a,T&b)T temp=a;a
5、=b;b=temp;int main()int xl=l,yl=2;swapl(xl,yl);coutx 1,4t y 1 endl;double x2=0.1 ,y2=0.2;swap2(x2,y2);c o u t x 2 M u y 2 en d l;return 0;3._class B(protected:virtual void f()cout,VB,endl;public:void g()f();void h()coutBen祖;);class D:public B(protected:virtual void f()cout,5VDM e n d l;public:void h
6、()cout,D,en d l;);void main()(D d;d.g();B&b=d;b.h();4._class ISink(public:virtual void OnEventHandle(int e)=0;);class C Eventmap sinkObjs;public:void addConnect(ISink*sink)sinkObjssink=sink;coutvv”订阅事件 vvendl;void FireEvent(int e)int count=0;map:iterator it=sinkObjs.begin();while(it!=sinkObjs.end()m
7、ap:value_type&v=*it+;v.second-OnEventHandle(e);count+;cout 激发了count”个响应”Display();int main()Circle*objs2;objsOJ=Point(100,200);objsl=new Circle(200,300,30);7.8.objs0Display();/*要求 Display Point*/objsl J.DisplayO;/*要求 Display Circle*/Show(objs0);/*要求 Display Circle*/Circle*pcir=objsl;cou tpcir-rendl;
8、/9._/10./ll1 2.说明下面d b 函数的错误_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _int&dbl(int i)(int j=2*i;return j;四.设 计 类(10分)设id 个 CollegeStudent 类:1.包含 name、year coursesAndGrades 等数据成员.2.要求在公有接口中有G et和 S et课程的分数,及计算所有课程的平均成绩的成员函数。3.实现上述成员函数方法。4.在 main函数中使用CollegeStudent类
9、上海大学2004-2005年冬季学期试卷课程名:面向对象程序设计C+学分:5学号:姓名:院系:绩选择1.使用标准C+库进行控制台的输入输出,要求声明A.#includeusing namespace std;C#include#using namespace std;B.#includeusing namespace std;D.#include#define namespace std;2.写一条语句,动态分配10个double空间的内存,地址赋给p:A.double p=new double;B.double*p=new doubleflO;C.double p=new double(10
10、);D.double*p=malloc(sizeof(double)*10);3.J(多选)要设计一个汽车制造调度系统,正确的是:A.构造 Automobile 类,BuildEngine 类,Machine 类,Work 类,Name 类。B.构造 Automobile 类,Engine 类,PaintMachine 类,Machine 类,Worker 类。C.Automobile类含有Engine类型的成员变量。D.PaintMachine类作为 Machine类的基类。E.变量MaryLeakey是Worker类的一个实例。F.Worker类作为Name类的派生类。4.(多选)下面说法
11、正确的有:A.用 class进行类的定义,类的成员在默认情况下是私有的。B.C+语言的变量声明必须写在函数代码的开头地方。C.一个抽象类,不能实例化。D.类的构造函数返回类型是voidE.在类的成员变量是指针时,应该考虑设计一个拷贝构造函数。F.类的静态成员函数不能访问非静态成员。5.重载操作符从输入流中抽取数据到CM y类型的对象中正确的设计是A.istream operator(istream in,CMy obj);B.istream&operator(istream in,CMy obj);C.istream&operator(istream&in,CMy obj);D.istream
12、&operator(istream&in,CMy&obj);6.声明一组函数,函数签名有冲突的是l)void Func(int*a);2)int Func(int*p);3)void Func(int a,int b);4)int Func(int&a);A.1)、2)B.l)、3)C.2)、4)D.都有7.(多选)对以下的函数声明,合法的调用方式有。void getstr(string&buff,char term=,n,);A.string str;getstr(str);B.string buff;getstr(&buff);C.string str;getstr(str,X t5);D
13、.char*buf=abc;getstr(buff,4t9);8.用C+标准库连接字符串,字符串str初值abed,然后连接串“efg”:A.char*str=abcd;str+=efg;B.string str=abccT;str+=efg;C.char str1=abcd;strcat(str,efg);D.char str=,abcd,str=str+efg;二 填空1.面向对象程序设计语言的主要特征是2.C+标准模板库的名空间的名称是3-7.复数类代码填空class Complex double real;double image;public:Complex()Complex(dou
14、ble r)Complex(double r,double i)operator-(Complex t,Complex u););operator-(Complex t,Complex u)复数减实现return8-19.编写影片管理程序#include#i n c l u d e using namespace std;class Filmpublic:Film(string t,string d)title=t;director=d;string title;string director;_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
15、_ _ _ _ _ _,声明数据打印函数 output);void Film:output()实现数据打印函数 output coutvv“director:,directorendl;)class声明导演影片剪辑片类DirectorCutpublic:DirectorCut(string t,string d,string c):changes=s;string changes;void output()_cout,?changes:,changesendl;);class 声明外国 影片类 ForeignFilm(public:ForeignFilm(string t,string d,s
16、tring 1):Fi l m(t,d)string language;声明数据打印函数output Film:output();cout,5 language:,endl;);void main()int select;c in select;Film*pFilm;if(select=O)pFilm=new Film(“红高粱”,“张艺谋”);else if(select=l)创建 DirectorCut 对象DirectorCut(xxx”Jxxxx,xxxxxx);else/创建 ForeignFilm 对象(HarryPotteCxxxx,English);pFilm-output()
17、;pFilm;销毁对象)20-24在一个数组list中查找数据k e y,数组中元素的数据类型是摸板类型,设计其摸板函数。成功返回其下标,否则返回-1。t empl at efind()查找 key(for()if(listi=key)return i;三.阅读程序1.写出输出结果:_void main()int*pl=new int;int*p2=new int;if(pl=p2)cout,9 pl 与 p2 相等vvend;elsecoutvv”pl 与 p2 不相等vvend;2.写出输出结果:_ class Bprotected:virtual void f()cou t,B,en d
18、 l;public:void g()f(););class D:public Bprotected:virtual void f()cout,D,endl;);void main()Dd;d.g();)3.写出输出结果:_ _double somefunc(int x,int y)if(y=0)throw“er:分母是 0”;return x/y;void main()(try cout somefunc(2,l)endl;cout somefunc(2,0)endl;catch(char*e)couteendl;)4.写出输出结果:_ _#include#include using name
19、space std;void print(int i)coutiendl;void main()vector v(5);for(int i=0;i5;i+)vi=2*i;for_each(v.begin(),v.end(),print);)5.写出输出结果:_ttin clude usin g n amespace std;class C B(static in t n;in t a;public:C B()n+;a=l;C B()n ;in t getN()return n;in t getA()return a;;i n t C B:n=0;v oid main()C B b;C B *p
20、b=n ew C B;cout getN()getA ()en dl;delete pb;coutb.getN()*,zb.get A ()en dl;)6.写出下面程序有标号的代码行调用序列(写法举例:(1),(1),(2),(1)7.写出输出结果:_#in clude ffin clude n clude#in cludc usin g n amespace std;class C O bj public:C O bj()C O bj(strin g ty pe)m_ty pe=ty pe;v irtual v oid load(istream&in)in m_I D n ame;/Ist
21、rin g n ame;strin g m I D;strin g m ty pe;);class C Studen t:public C O bj public:C Studen t():C O bj(C Studen t)v irtual v oid load(istream&in);v oid setC ourseScore(strin g courselD,in t score)courseScorescourseI D=score;map courseScores;);v oid C Studen t:load(istreiun&in)C O bj:load(in);in t n;i
22、n n;for(in t i=0;i course;in t score;in score;setC ourseScore(course,score);)class C C ourse:public C O bj public:C C ourse():C O bj(C C ourse);class C Man age public:C Man age()for(map:iterator p=m A llO bj.begin O ;p!=m A llO bj.en d();p+)C O bj*pobj=p-secon d;delete pobj;m_A 1 1 0 bj.clearO ;v oi
23、d Read(con st char*filen ame)ifstream ifile(fi1 en ame);w hile(ifile)strin g ty pe;ifile ty pe;C O bj*pO bj=0;if(ly pe=C Studen t)pO bj=n ew C Studen t;else if(ty pe二 二 C C ourse)pO bj=n ev C C ourse;else break;pO bj-1 oad(ifi1 e);m A llO bjpO bj-m_I D=pO bj;)v oid Report(strin g studen tI D)try C O
24、 bj*pStu=m_A 1 1 0 bjstuden tI D;C Studen t*pStuden t=dy n ami c_cast(pStu);cout n ame(成绩表 en dl;map&courseScores=pStuden t-courseScores;for(map:iterator p=courseScores.begin O ;p!=courseScores.en d();p+)C O bj*pC our=m_A 1 1 0 bjp-first;C C ourse*pC ourse=dy n amic_cast(pC our);cout n amez,t,/p-sec
25、on d en d 1;catch(.)cout 此学生不存在,或数据库出错!en dl;)priv ate:map m_A 1 1 0 bj;;v oid main()C Man age man age;man age.Read(data.tx t);文件data,tx t有数据,见后man age.Report(“0 2 0 0 0 1 );)数据文件data,ix l中有数据如卜.:C Studen t 0 2 0 0 0 1 张三 2 A 0 0 1 8 0 A 0 0 2 7 0C Studen t 0 1 0 0 0 2 李四 3 A 0 0 1 8 0 A 0 0 2 7 0 A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 C+ 试卷
限制150内