上海大学1516级C++试题DOCWord下载.docx

上传人:b****5 文档编号:20719612 上传时间:2023-01-25 格式:DOCX 页数:15 大小:26.63KB
下载 相关 举报
上海大学1516级C++试题DOCWord下载.docx_第1页
第1页 / 共15页
上海大学1516级C++试题DOCWord下载.docx_第2页
第2页 / 共15页
上海大学1516级C++试题DOCWord下载.docx_第3页
第3页 / 共15页
上海大学1516级C++试题DOCWord下载.docx_第4页
第4页 / 共15页
上海大学1516级C++试题DOCWord下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

上海大学1516级C++试题DOCWord下载.docx

《上海大学1516级C++试题DOCWord下载.docx》由会员分享,可在线阅读,更多相关《上海大学1516级C++试题DOCWord下载.docx(15页珍藏版)》请在冰豆网上搜索。

上海大学1516级C++试题DOCWord下载.docx

"

{

size=strlen(②str);

x=size>

0?

newchar[size]:

NULL;

if(x==NULL)size=0;

for(inti=0;

i<

size;

i++)

x[i]=str[i];

}

String(constString&

s):

x(③NULL)

*this=s;

//直接利用深赋值运算符函数

virtual~String()

if(x!

=NULL)delete④[]x;

size=0;

String&

operator=(constString&

s)

if(this==⑤&

s)return*this;

=NULL)delete[]x;

size=s.size;

x=newchar[size];

x[i]=s.x[i];

return⑥*this;

⑦char&

operator[](intindex){returnx[index];

}

friendostream&

operator<

<

(ostream&

out,constString&

s.size;

out<

s.x[i];

return⑧out;

⑨friendistream&

operator>

>

(istream&

in,String&

stringstr;

in>

str;

//利用C++字符串

s=String(str.c_str());

//利用深赋值运算符

returnin;

friend⑩intCompare(constString&

s1,constString&

s2)

inti;

for(i=0;

s1.size&

&

s2.size&

s1.x[i]==s2.x[i];

;

if(i<

s2.size)

returns1.x[i]>

s2.x[i]?

1:

-1;

elseif(i<

i==s2.size)

return1;

elseif(i==s1.size&

return-1;

else

return0;

friendbooloperator<

(constString&

{returnCompare(s1,s2)<

0;

=(constString&

=0;

friendbooloperator>

{returnCompare(s1,s2)>

friendbooloperator==(constString&

{returnCompare(s1,s2)==0;

friendbooloperator!

{returnCompare(s1,s2)!

protected:

char*x;

intsize;

};

voiddisplay(constString&

char*str[]={"

小于"

"

等于"

大于"

cout<

\"

s1<

str[1+Compare(s1,s2)]

<

s2<

\t"

endl;

intmain()

{Strings1("

Helloworld!

),s2(s1);

运行结果

helloworld!

Helloworld"

display(s1,s2);

s2[0]='

h'

;

s2="

s1="

return0;

三、阅读程序写出运行结果(每行1分,共20分)

3.1(10分)本题所涉及的Time类,相关头文件和源程序文件如下。

//MyTime.h头文件

#ifndefMYTIME_H

#defineMYTIME_H

iomanip>

usingnamespacestd;

classTime

Time(inthour=0,intminute=0,intsecond=0);

Time&

operator++();

Timeoperator++(int);

friendTimeoperator+(constTime&

t,intn);

out,constTime&

t);

friendistream&

in,Time&

inth,m,s;

#endif

//MyTime.cpp源程序文件

#include"

MyTime.h"

Time:

:

Time(inthour,intminute,intsecond):

h(hour),m(minute),s(second)//构造函数

Time&

operator++()

s++;

if(s==60){s=0;

m++;

if(m==60){m=0;

h++;

if(h==24)h=0;

return*this;

TimeTime:

operator++(int)

Timetemp(*this);

++(*this);

returntemp;

Timeoperator+(constTime&

t,intn)

Timeresult(t);

intx=(t.h*60+t.m)*60+t.s+n;

while(x<

0)

x+=24*60*60;

x%=24*60*60;

result.s=x%60;

result.m=x/60%60;

result.h=x/3600;

returnresult;

ostream&

t)

out<

setfill('

0'

)<

setw

(2)<

t.h<

'

t.m<

t.s<

);

returnout;

istream&

charstr[200];

in.getline(str,200,'

t.h=atoi(str);

t.m=atoi(str);

in.getline(str,200);

t.s=atoi(str);

returnin;

运行结果(3.1)

23:

59:

51

52

50

22:

请输入时间:

59

00:

00

10:

20:

30

//main.cpp源程序文件(测试程序)

Timet0(23,59,50),t;

t=t0;

cout<

++t<

++t;

t<

++++t;

t++<

t++;

t++++;

t=t+(-3600);

请输入时间(hh:

mm:

ss):

cin>

t;

t+(10*60+20)*60+30<

3.2(10分)以下4小题所涉及的Test1类,相关头文件和源程序文件如下。

//test03.h头文件

#ifndefTEST03_H

#defineTEST03_H

classTest1

Test1(inta=0);

Test1(constTest1&

virtual~Test1();

Test1&

operator=(constTest1&

staticintNum();

staticintSum();

out,constTest1&

in,Test1&

staticintnum,sum;

intx;

voidShow();

//普通的C++函数声明

//Test03.cpp源程序文件

Test03.h"

intTest1:

num=0,Test1:

sum=0;

//静态数据成员定义及初始化

Test1:

Test1(inta):

x(a)//构造函数

num++;

sum+=x;

Test1(constTest1&

t):

x(t.x)//拷贝构造函数

~Test1()

num--;

sum-=x;

Test1&

t)//赋值运算符函数

sum+=t.x-x;

x=t.x;

Num(){returnnum;

Sum(){returnsum;

t.x;

inttemp;

in>

temp;

Test1:

sum+=temp-t.x;

t.x=temp;

voidShow()//普通的C++函数

cout<

Num="

Num()

<

\tSum="

Sum()<

//3.2.1测试程序之一

运行结果(3.2.1)

Num=0,Sum=0

Show();

//3.2.2测试程序之二

Test1x(100);

//创建一个全局对象

voidf(Test1t)

运行结果(3.2.2)

Num=1,Sum=100

Num=2,Sum=200

f(x);

//3.2.3测试程序之三

voidf(Test1&

运行结果(3.2.3)

Test1x(100);

//创建一个自动对象

//3.2.4测试程序之四

运行结果(3.2.4)

Num=4,Sum=60

Num=5,Sum=90

Test1x(10),y(20),a[2]={x,y}

Test1*p=newTest1;

*p=30;

deletep;

四、(40分)设计复数类。

要求运行时得到指定的输出结果。

①实现如下测试程序中用到的9个函数(每个函数3分。

无须定义拷贝构造函数、析构函数及赋值运算符函数);

②自选3个运算符,并实现运算符函数重载(每个函数3分。

注意复数不能比较大小);

③数据成员、类设计的其他部分(4分)。

【注意:

数学函数doubleatan2(doubley,doublex);

当x≠0时返回y/x的反正切值,当x=0时返回π/2或-π/2(正负号与y同号)】。

Complex.h"

Complexx(3,4),y(x),z;

//创建对象

x<

y<

z<

//输出复数

x.Abs()<

\t'

//计算复数的模长

z.Real()=z.Imag()=1;

//设置复数的实部、虚部

z.Angle()*180/M_PI<

//计算复数的角度

x+z<

//复数的算术运算:

+、*,迭代赋值*=

运行结果(4.1)

(3,4),(3,4),(0,0)

545

(4,5)(-1,7)(-7,24)

x*z<

(x*=x)<

//Complex.h

cmath>

classComplex

Complex(doublereal=0,doubleimag=0):

re(real),im(imag){}

double&

Real(){returnre;

Imag(){returnim;

doubleAngle()const{returnatan2(im,re);

doubleAbs()const{returnsqrt(re*re+im*im);

friendComplexoperator+(constComplex&

c1,constComplex&

c2)

Complexresult(c1);

result.re+=c2.re;

result.im+=c2.im;

returnresult;

friendComplexoperator*(constComplex&

Complexresult;

result.re=c1.re*c2.re-c1.im*c2.im;

result.im=c1.re*c2.im+c1.im*c2.re;

Complex&

operator*=(constComplex&

c)

doublex=re*c.re-im*c.im;

im=re*c.im+im*c.re;

re=x;

return*this;

out,constComplex&

out<

('

c.re<

c.im<

)'

returnout;

doublere,im;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1