c++类与对象习题答案(3)

2020-04-14 01:06

date Birth;

char HomeAdd[20]; public: Person(){ ID[0]=Name[0]=Sex[0]=HomeAdd[0]=0; };

}

Person(char id[],char name[],char sex[],date birth,char homeadd[]){ strcpy(ID,id); }

strcpy(Name,name); strcpy(Sex,sex); Birth=birth;

strcpy(HomeAdd,homeadd); Birth.year=Birth.month=Birth.day=0;

Person(Person& p){ strcpy(ID,p.ID); }

void setID(char id[]){ strcpy(ID,id); }

void setName(char name[]){ }

strcpy(Name,name); strcpy(Name,p.Name); strcpy(Sex,p.Sex); Birth=p.Birth;

strcpy(HomeAdd,p.HomeAdd);

void setSex(char sex[]){ strcpy(Sex,sex); }

void setBirth(date birth){ Birth=birth; }

void setHome(char homeadd[]){ } }

strcpy(HomeAdd,homeadd);

void print(){

cout<<\

cout<<\cout<

int main(){ date birth; birth.year =1991;

birth.month =6;

birth.day =12;

Person p1(\陈建华\男\中吴大道1801号\p1.print (); Person p2; p2.print (); return 0 ;

}

5.5设计如下类:

1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。

2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制 3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。 #include #include

const double PI=3.1415; using namespace std; class Point{ double X,Y; public:

Point(double x=0,double y=0){ X=x;Y=y; }

Point(Point& p){ X=p.X ; Y=p.Y ; }

double getx(){return X;}

double gety(){return Y;} }; class Line{

Point pstart,pend; double length;

Line(Point p1,Point p2):pstart(p1),pend(p2){ setl(); }

Line(Line& l):pstart(l.pstart),pend(l.pend){

public:

};

setl();

}

double getl(){return length;} void setl(){ double deltax,deltay; }

deltax=pstart.getx()-pend.getx(); deltay=pstart.gety()-pend.gety(); length=sqrt(deltax*deltax+deltay*deltay);

class Trangle{ Line lfirst,lsecond,lthird; double area; public:

Trangle(Line lf,Line ls,Line lt):lfirst(lf),lsecond(ls),lthird(lt){ area=0; }

bool check(){ double l1,l2,l3;

l1=lfirst.getl(); l2=lsecond.getl();

l3=lthird.getl(); return l1

void calarea(){

if (check()){ double s; }

double l1,l2,l3; l1=lfirst.getl(); l2=lsecond.getl(); l3=lthird.getl(); s=(l1+l2+l3)/2.0;

area=sqrt(s*(s-l1)*(s-l2)*(s-l3));

}

void print(){

cout<<\

} };

int main(){

Point p1,p2(4,0),p3(0,3);

Line l1(p1,p2),l2(p1,p3),l3(p2,p3); Trangle t(l1,l2,l3);

if(t.check ())t.calarea();

t.print(); return 0; }

5.6建立一个分数类Fraction。分数类的数据成员包括分子和分母。成员函数包括构造函数、复制构造函数。构造函数要对初始化数据进行必要的检查(分母不能为0)。将分数显示成 “a/b”形式的输出函数。成员函数包括约分、通分、加、减、乘、除、求倒数、比较大小、显示和输入。完成以上所有成员函数并在主函数中进行检验。 #include using namespace std; class Fraction{ };

Fraction::Fraction(int num,int deno){ Set(num, deno); }

Fraction::Fraction(Fraction& f){

numerator=f.numerator; denominator=f.denominator; int numerator,denominator; int common_divisor(); void contracted();

Fraction(int=0,int=1); Fraction(Fraction&); Fraction Add(Fraction); Fraction Sub(Fraction); Fraction Mul(Fraction); Fraction Div(Fraction); bool operator>=(Fraction); bool operator<=(Fraction);

bool operator==(Fraction);

bool operator<(Fraction f){return !(operator>=(f));} bool operator>(Fraction f){return !(operator<=(f));} bool operator!=(Fraction f){return !(operator==(f));} Fraction Updown();

void Set(int=0,int=1);

void disp(){cout<<\

//计算最大公约数 //分数化简

public:

}

Fraction Fraction::Add(Fraction f){

Fraction

Temp(numerator*f.denominator+f.numerator*denominator,denominator*f.denominator); Temp.contracted(); return Temp; }

Fraction Fraction::Sub(Fraction f){

Fraction

Temp(numerator*f.denominator-f.numerator*denominator,denominator*f.denominator); Temp.contracted(); return Temp;

}

Fraction Fraction::Mul(Fraction f){ Fraction Temp(numerator*f.numerator,denominator*f.denominator); Temp.contracted(); return Temp;

} Fraction Fraction::Div(Fraction f){

Fraction Temp(f.denominator,f.numerator ); Temp=Mul(Temp); Temp.contracted(); return Temp;

}

int Fraction::common_divisor(){ int residue;

int dividend=numerator,divisor=denominator; while(residue=dividend%divisor){ dividend=divisor;

divisor=residue;

}

return divisor;

}

void Fraction::contracted() { int residue=common_divisor(); numerator/=residue;

denominator/=residue;

if(denominator<0){numerator*=-1;denominator*=-1;} }

bool Fraction::operator>=(Fraction f){

Fraction Temp=Sub(f);

return (Temp.numerator >=0); }

bool Fraction::operator<=(Fraction f){ Fraction Temp=Sub(f); }

Fraction Fraction::Updown(){ int p;

Fraction Temp; if (numerator!=0){ }

return Temp;

p=numerator;

numerator=denominator; denominator=p;

Temp.numerator=numerator; Temp.denominator=denominator; return (Temp.numerator <=0);} Fraction Temp=Sub(f);

return (Temp.numerator ==0); bool Fraction::operator==(Fraction f){

}

void Fraction::Set(int num,int deno){ if(deno!=0){ numerator=num;denominator=deno;

contracted(); }}

void main(){ Fraction f1(1,3),f2=2,f3,f4,f5(2,8),f6,f7(8,3),f8(8,3),f9(1,4); f4=f1.Add(f2);

f4.disp();

f6=f2.Div(f5).Div(f7); f6.disp(); f5.disp(); f6=f1.Sub(f2); f6.disp(); f9.Set(5,3); f9.disp(); f9.Updown(); f9.disp();

cout<<(f7==f8)<

cout<<(f7==f1)<f2)<


c++类与对象习题答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京林业大学17年 MTI 考研经验贴分享-致18学子

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: