上海大学级试题_第1页
上海大学级试题_第2页
上海大学级试题_第3页
上海大学级试题_第4页
上海大学级试题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成上海大学20152016学年度秋季学期试卷(A卷)绩课程名:面向对象程序设计课程号:08305121学分:5应试人声明:我保证遵守上海大学学生手册中的上海大学考场规则,如有考试违纪、作弊行为,愿意接受上海大学学生考试违纪、作弊行为界定及处分规定的纪律处分。应试人应试人学号应试人所在院系题号一(20)二(20)三(20)四(40)得分得分一、判断题(每题2分,共20分)1.类的构造函数的函数名与类名相同,能够重载构造函数。()2.类的析构函数能够被重载。()3.重载运算符函数不能够改变运算符的操作数个数、优先级和结合方向。()4.引用在声明时必定对其初始化,以绑定某个已经存在的变量(或对象),

2、在该引用的生命期内,该绑定不能够被更正。()指针变量在定义时必定对其初始化,以锁定某个已经存在的目标变量(或对象),在该指针变量的生命期内,该指向不能够被更正。()类的非静态成员函数均有一个隐含的形式参数this指针常量,用于指向调用该函数的对象。函数体中不能够改变该指针常量的指向(即锁定调用该函数的对象)。()派生类继承了基类的所有数据成员,并且在派生类的成员函数中都能直接接见基类的接见属性为private的成员。()构造派生类对象时,先调用基类的构造函数,后执行派生类的构造函数。析构派生类对象时,先调用基类的析构函数,后执行派生类的析构函数。()含纯虚函数的类称为抽象类,不能够创办抽象类的

3、对象,不能够定义抽象类的指针变量,不能够声明抽象类的引用。()引用返回的函数能够作左值,也防备了函数值返回时创办与返回种类相同的临时无名对象。()得分二、填空题(每空2分,共20分)以下设计了一个字符串类String,请根据运行结果,完成程序。includeincludeincludeusingnamespacestd;classStringpublic:String(constchar*str=)size=strlen(str);x=size0newcharsize:NULL;if(x=NULL)size=0;for(inti=0;isize;i+)xi=stri;String(constS

4、tring&s):x(NULL)*this=s;/直接利用深赋值运算符函数virtualString()if(x!=NULL)deletex;size=0;String&operator=(constString&s)if(this=&sif(x!=NULL)deletesize=;x=newcharsize;)returnx;*this;if(x=NULL)size=0;for(inti=0;isize;i+)xi=i;return*this;char&operator(intindex)returnxindex;friendostream&operator(ostream&out,cons

5、tString&s)for(inti=0;i;i+)out(istream&in,String&s)stringstr;instr;/利用C+字符串s=String();/利用深赋值运算符returnin;friendintCompare(constString&s1,constString&s2)inti;for(i=0;i&i&i=i;i+);if(i&ii1:-1;elseif(i&i=return1;elseif(i=&ireturn-1;elsereturn0;friendbooloperator(constString&s1,constString&s2)returnCompare

6、(s1,s2)0;friendbooloperator=(constString&s1,constString&s2)returnCompare(s1,s2)(constString&s1,constString&s2)returnCompare(s1,s2)0;friendbooloperator=(constString&s1,constString&s2)returnCompare(s1,s2)=0;friendbooloperator=(constString&s1,constString&s2)returnCompare(s1,s2)=0;friendbooloperator!=(c

7、onstString&s1,constString&s2)returnCompare(s1,s2)!=0;protected:char*x;intsize;voiddisplay(constString&s1,constString&s2)char*str=小于,等于,大于;couts1str1+Compare(s1,s2)s2tendl;intmain()Strings1(Helloworld!),s2(s1);display(s1,s2);运行结果s20=h;display(s1,s2);Helloworld!等于Helloworld!s2=Helloworld;Helloworld!小于

8、helloworld!display(s1,s2);Helloworld!大于Helloworlds2=Helloworld;Helloworld!大于Helloworlddisplay(s1,s2);s1=;s2=;display(s1,s2);return0;得1分,共20分)三、阅读程序写出运行结果(每行分(10分)本题所涉及的Time类,相关头文件和源程前言件以下。/头文件#ifndefMYTIME_HdefineMYTIME_Hincludeincludeusingnamespacestd;classTimepublic:Time(inthour=0,intminute=0,ints

9、econd=0);Time&operator+();Timeoperator+(int);friendTimeoperator+(constTime&t,intn);friendostream&operator(istream&in,Time&t);protected:inth,m,s;Time&t);#endif/源程前言件#includeTime:Time(inthour,intminute,intsecond):h(hour),m(minute),s(second)/构造函数Time&Time:operator+()s+;if(s=60)s=0;m+;if(m=60)m=0;h+;if(

10、h=24)h=0;return*this;TimeTime:operator+(int)Timetemp(*this);+(*this);returntemp;Timeoperator+(constTime&t,intn)Timeresult(t);intx=*60+*60+while(x0)x+=24*60*60;x%=24*60*60;=x%60;=x/60%60;=x/3600;returnresult;+n;ostream&operator(ostream&out,constTime&t)outsetfill(0)setw(2):setw(2):setw(2)(istream&in,T

11、ime&t)charstr200;(str,200,:);=atoi(str);(str,200,:);atoi(str);(str,200);atoi(str);returnin;源程前言件(测试程序)intmain()Timet0(23,59,50),t;t=t0;cout+tendl;t=t0;+t;couttendl;t=t0;+t;couttendl;t=t0;coutt+endl;t=t0;t+;couttendl;t=t0;t+;couttendl;t=t0;t=t+(-3600);couttendl;coutt;couttendl;cout+tendl;coutt+(10*60

12、+20)*60+30endl;return0;运行结果23:59:5123:59:5123:59:5223:59:5023:59:5123:59:5122:59:50请输入时间:23:59:59(10分)以下4小题所涉及的Test1类,相关头文件和源程前言件以下。/头文件ifndefTEST03_HdefineTEST03_Hincludeusingnamespacestd;classTest1public:Test1(inta=0);Test1(constTest1&t);virtualTest1();Test1&operator=(constTest1&t);staticintNum();

13、staticintSum();friendostream&operator(istream&in,Test1&t);protected:staticintnum,sum;intx;voidShow();#endif/#include/一般的源程前言件C+函数声明intTest1:num=0,Test1:sum=0;/静态数据成员定义及初始化Test1:Test1(inta):x(a)/构造函数num+;sum+=x;Test1:Test1(constTest1&t):x/拷贝构造函数num+;sum+=x;Test1:Test1()num-;sum-=x;Test1&Test1:operato

14、r=(constTest1&t)/赋值运算符函数sum+=-x;x=;return*this;intTest1:Num()returnnum;intTest1:Sum()returnsum;ostream&operator(ostream&out,constTest1&t)out(istream&in,Test1&t)inttemp;intemp;Test1:sum+=temp-;temp;returnin;voidShow()/一般的C+函数coutNum=Test1:Num(),tSum=Test1:Sum()endl;测试程序之一includeintmain()运行结果Show();re

15、turn0;测试程序之二#includeTest1x(100);/创办一个全局对象voidf(Test1t)Show();intmain()运行结果=0,Sum=0=1,Sum=100Show();Num=2,Sum=200f(x);Num=1,Sum=100Show();return0;测试程序之三includevoidf(Test1&t)Show();intmain()运行结果=1,Sum=100Num=1,Sum=100Test1x(100);/创办一个自动对象Show();f(x);Show();return0;测试程序之四includeintmain()Test1x(10),y(20

16、),a2=x,yShow();Test1*p=newTest1;*p=30;Show();deletep;Show();return0;得运行结果=4,Sum=60Num=5,Sum=90Num=4,Sum=60分四、(40分)设计复数类。要求运行时获取指定的输出结果。实现以下测试程序中用到的9个函数(每个函数3分。不用然义拷贝构造函数、析构函数及赋值运算符函数);自选3个运算符,并实现运算符函数重载(每个函数3分。注意复数不能够比较大小);数据成员、类设计的其他部分(4分)。【注意:数学函数doubleatan2(doubley,doublex);当x0时返回y/x的反正切值,当x=0时返回

17、/2或-/2(正负号与y同号)】。#includeint/main()Complexx(3,4),y(x),z;/创办对象coutx,y,zendl;/输出复数cout()t;/计算复数的模长()=()=1;/设置复数的实部、虚部cout()*180/M_PIendl;/计算复数的角度coutx+zt;/复数的算术运算:+、*,迭代赋值*=coutx*zt;cout(x*=x)endl;运行结果return0;(3,4),(3,4),(0,0)545#include#includeusingnamespacestd;classComplexpublic:Complex(doublereal=0,doubleimag=0):re(real),im(imag)double&Real()returnre;double&Imag()returnim;doubleAngle()constreturnatan2(im,re);doubleAbs()constreturnsqrt(re*re+im*im);friendComplexoperator+(constComplex&c1,constComplex&c2)Complexresult(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论