综合实验四参考答案课案Word文档格式.docx

上传人:b****5 文档编号:19500677 上传时间:2023-01-06 格式:DOCX 页数:49 大小:27.42KB
下载 相关 举报
综合实验四参考答案课案Word文档格式.docx_第1页
第1页 / 共49页
综合实验四参考答案课案Word文档格式.docx_第2页
第2页 / 共49页
综合实验四参考答案课案Word文档格式.docx_第3页
第3页 / 共49页
综合实验四参考答案课案Word文档格式.docx_第4页
第4页 / 共49页
综合实验四参考答案课案Word文档格式.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

综合实验四参考答案课案Word文档格式.docx

《综合实验四参考答案课案Word文档格式.docx》由会员分享,可在线阅读,更多相关《综合实验四参考答案课案Word文档格式.docx(49页珍藏版)》请在冰豆网上搜索。

综合实验四参考答案课案Word文档格式.docx

1008

姓名:

张三

性别:

工资:

2500

1009

李四

2600

参考程序:

/********************************************************

2012IMISC++Practice4(Objectorientedprogramming)

Task1

Programmedby

YEHuanzhuo

Lakeside

Nov.28,2012

********************************************************/

#include<

iostream>

string>

usingnamespacestd;

classEmployee

{

protected:

intnum;

charname[18];

charsex[3];

intwage;

staticintcount;

staticinttotalWage;

public:

Employee(intnu,char*nm,char*sx,intwg);

~Employee();

voidShowBase();

staticvoidShowStatic();

};

intEmployee:

:

count=0;

totalWage=0;

Employee:

Employee(intnu,char*nm,char*sx,intwg)

num=nu;

strcpy(name,nm);

strcpy(sex,sx);

wage=wg;

count++;

totalWage+=wg;

}

~Employee()

count--;

totalWage-=wage;

voidEmployee:

ShowBase()

cout<

<

"

\n"

;

num<

endl;

name<

sex<

wage<

ShowStatic()

count<

totalWage<

元"

intmain()

intn,i,nu,wg;

charnm[18],sx[3];

cin>

>

n;

Employee**a=newEmployee*[n];

for(i=0;

i<

i++)

{

cin>

nu>

nm>

sx>

wg;

a[i]=newEmployee(nu,nm,sx,wg);

}

Employee:

ShowStatic();

a[i]->

ShowBase();

deletea[i];

if(i!

=n-1)

cout<

delete[]a;

return0;

 

2.日期类Date的设计(构造函数) 

定义一个日期类Date,能提供和设置由年、月、日组成的日期。

编写程序,提供类的构造函数用于根据输入初始化日期类Date的对象;

提供函数用于输出日期类对象的日期,按照如下格式输出:

yyyy-mm-dd

初始化日期类Date对象的数据,分别是年、月、日。

程序有多个测试用例。

按照指定格式输出的日期。

20101230

20121830

2012610

2010-12-30

ERRORDATE

2012-06-10

Task2

iomanip>

classDate

intyear;

intmonth;

intday;

Date(inty,intm,intd);

voidshow();

Date:

Date(inty,intm,intd)

year=y;

month=m;

day=d;

voidDate:

show()

setfill('

0'

)<

year<

-"

setw

(2)<

month<

day<

'

inty,m,d,leap,md[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

while(cin>

y>

m>

d)

if(y>

=0&

&

y<

=9999&

=1&

m<

=12)

{

leap=y%4==0&

y%100!

=0||y%400==0;

if((m==2&

d<

=md[m]+leap)||(m!

=2&

=md[m]))

{

DateD(y,m,d);

D.show();

}

else

cout<

ERRORDATE"

}

else

3.复数类Imaginary(友元函数)

根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。

类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±

bi”格式显示复数的成员函数print()。

设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。

floatx1,y1,x2,y2;

x1>

y1>

x2>

y2;

//输入4个数据,分别表示进行运算的两个复数的实部和虚部

Imaginaryimag1(x1,y1),imag2(x2,y2);

//用x1、y1创建Imaginary类对象imag1

Add(imag1,imag2);

//调用友元函数求两个复数之和,按a±

bi的格式显示运算结果(a和b均为实数)

Sub(imag1,imag2);

//求两个复数之差并显示运算结果

}

输入4个数据,分别表示进行运算的两个复数的实部和虚部

2行,分别显示两个复数进行加、减运算的结果

1325

3+8i

-1-2i

Task3

classImaginary

private:

floata,b;

Imaginary(floatx,floaty):

a(x),b(y){}

voidprint()

if(a)

a;

if(b>

0)

+"

elseif(b==0)

0;

return;

if(b==1)

i"

elseif(b==-1)

-i"

elseif(b)

b<

friendvoidAdd(Imaginaryc,Imaginaryd);

friendvoidSub(Imaginaryc,Imaginaryd);

voidAdd(Imaginaryc,Imaginaryd)

Imaginarye(c.a+d.a,c.b+d.b);

e.print();

voidSub(Imaginaryc,Imaginaryd)

Imaginarye(c.a-d.a,c.b-d.b);

4.二进制类

(1)——运算符重载

将一个16位二进制数表示成0和1的字符序列,即用一个字符数组来存放这个二进制数。

在这个类中设置两个构造函数,一个是传递整数参数的,另一个是传递字符串参数的。

因为用户在创建对象时传递的二进制数,可能是以整数形式给出,也可能是以数字串形式给出,系统应该都能接受。

另外有一个类型转换函数int(),用来将类类型向整型转换。

两个重载运算符“+”,“-”,用来完成两个二进制数之间的加减运算。

classbinary{//定义二进制类

charbits[16];

//二进制字模数组

binary(char*);

//字符串参数构造函数

binary(int);

//整型参数构造函数

friendbinaryoperator+(binary,binary);

//重载“+”

friendbinaryoperator-(binary,binary);

//重载“-”

operatorint();

//类类型转换函数

voidprint();

主函数设计如下:

binaryn1="

1011"

binaryn2=int(n1)+15;

binaryn3=n1-binary(7);

n1.print();

n2.print();

n3.print();

int(n2)+5<

n2-binary(5)<

n3+binary(5)<

int(n3)-5<

}

0000000000001011

0000000000011010

0000000000000100

31

21

9

-1

Task4

//iftheprogramisjudgedbyOJ,pleasefollowC++headfilestandard

iostream.h>

string.h>

//usingnamespacestd;

voidprint();

binary:

binary(char*b)

inti,slen=strlen(b);

slen;

i++)//youcanchoosedifferentorder

bits[i]=b[slen-1-i]-'

//youmayuseintorchar

for(;

16;

i++)//filltherestwithzero

bits[i]=0;

binary(inta)

inti=0;

while(a)

bits[i++]=a%2;

a/=2;

//a>

=1;

operatorint()

inta=0,b=1,i;

if(bits[i])

a+=b;

b<

//b*=2;

returna;

voidbinary:

print()

inti;

for(i=15;

i>

=0;

i--)

cout<

(int)bits[i];

binaryoperator+(binaryx,binaryy)

binaryz(0);

inti,a=0;

z.bits[i]=x.bits[i]+y.bits[i]+a;

a=z.bits[i]/2;

z.bits[i]%=2;

returnz;

binaryoperator-(binaryx,binaryy)

z.bits[i]=x.bits[i]-y.bits[i]-a;

if(z.bits[i]<

a=1;

z.bits[i]+=2;

a=0;

5.二进制类

(2)——运算符重载

在上一题的基础上,将+、-运算符定义为binary类的成员函数。

并且重载运算符~、&

、|,分别将二进制数按位取反、数按位与及按位或。

binaryn4=n1&

n2;

binaryn5=n1|n2;

binaryn6=~n1;

n4.print();

n5.print();

n6.print();

0000000000001010

0000000000011011

111111*********0

Task5

binaryoperator+(binary);

binaryoperator-(binary);

binaryoperator~();

//重载“~”

binaryoperator&

(binary);

//重载“&

binaryoperator|(binary);

//重载“|”

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

当前位置:首页 > 工程科技 > 能源化工

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

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