C++总复习习题讲解.docx

上传人:b****5 文档编号:12368197 上传时间:2023-04-18 格式:DOCX 页数:17 大小:16.80KB
下载 相关 举报
C++总复习习题讲解.docx_第1页
第1页 / 共17页
C++总复习习题讲解.docx_第2页
第2页 / 共17页
C++总复习习题讲解.docx_第3页
第3页 / 共17页
C++总复习习题讲解.docx_第4页
第4页 / 共17页
C++总复习习题讲解.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++总复习习题讲解.docx

《C++总复习习题讲解.docx》由会员分享,可在线阅读,更多相关《C++总复习习题讲解.docx(17页珍藏版)》请在冰豆网上搜索。

C++总复习习题讲解.docx

C++总复习习题讲解

1、点、线段、三角形详细参考版

#include

#include

classPoint

{

protected:

intx1,y1;

public:

Point(intx=0,inty=0)

{x1=x;y1=y;}

voidSetPoint(intx,inty)

{x1=x;y1=y;}

voidGetPoint(int*px,int*py)

{*px=x1;*py=y1;}

voidShow()

{cout<<"Point("<

};

classLine:

publicPoint

{

protected:

intx2,y2;

public:

Line()//自动调用父类缺省的构造函数

{x2=0;y2=0;}

Line(intxx1,intyy1,intxx2,intyy2):

Point(xx1,yy1)

{x2=xx2;y2=yy2;}

voidSetPoint1(intxx1,intyy1)

{x1=xx1;y1=yy1;}

voidSetPoint2(intxx2,intyy2)

{x2=xx2;y2=yy2;}

voidGetPoint1(int*px1,int*py1)

{*px1=x1;*py1=y1;}

voidGetPoint2(int&rx2,int&ry2)

{rx2=x2;ry2=y2;}

doubleLineLen()

{

doublelen;

len=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

return(len);

}

voidShow()

{

cout<<"Line:

("<

cout<<"LineLength="<

}

};

classTriangle:

publicLine

{

protected:

intx3,y3;

public:

Triangle()//自动调用父类缺省的构造函数

{x3=0;y3=0;}

Triangle(intxx1,intyy1,intxx2,intyy2,intxx3,intyy3):

Line(xx1,yy1,xx2,yy2)

{x3=xx3;y3=yy3;}

voidGetPoint3(int&rx3,int&ry3)//不另定义GetPoint1()、GetPoint2()

{rx3=x3;ry3=y3;}//因已继承

voidSetPoint3(intxx3,intyy3)//不另定义SetPoint1()、SetPoint2()

{x3=xx3;y3=yy3;}//因已继承

doubleLineLen12()

{return(LineLen());}

doubleLineLen13()

{

doublelen;

len=sqrt((double)((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)));

return(len);

}

doubleLineLen23()

{

doublelen;

len=sqrt((double)((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)));

return(len);

}

doubleAroundLen()

{return(LineLen12()+LineLen23()+LineLen13());}

doubleArea()

{

doublearea,s,a,b,c;

a=LineLen12();

b=LineLen23();

c=LineLen13();

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

return(area);

}

voidShow()

{cout<<"Triangle:

("<

cout<<"LineLen12="<

cout<<"LineLen13="<

cout<<"LineLen23="<

cout<<"AroundLen="<

cout<<"Area="<

}

};

voidmain()

{

cout<<"测试三角形类:

\n";

Triangletri(0,0,0,2,2,0);

tri.Show();

}

1.1点、线段、三角形简化参考版

#include

#include

classPoint

{

protected:

intx1,y1;

public:

Point(intx=0,inty=0)

{x1=x;y1=y;}

};

classLine:

publicPoint

{

protected:

intx2,y2;

public:

Line(intxx1,intyy1,intxx2,intyy2):

Point(xx1,yy1)

{x2=xx2;y2=yy2;}

doubleLineLen()

{

doublelen;

len=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

return(len);

}

voidShow()

{

cout<<"Line:

("<

cout<<"LineLength="<

}

};

classTriangle:

publicLine

{

protected:

intx3,y3;

public:

Triangle(intxx1,intyy1,intxx2,intyy2,intxx3,intyy3):

Line(xx1,yy1,xx2,yy2)

{x3=xx3;y3=yy3;}

doubleLineLen12()

{return(LineLen());}

doubleLineLen13()

{

doublelen;

len=sqrt((double)((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)));

return(len);

}

doubleLineLen23()

{

doublelen;

len=sqrt((double)((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)));

return(len);

}

doubleAroundLen()

{return(LineLen12()+LineLen23()+LineLen13());}

doubleArea()

{

doublearea,s,a,b,c;

a=LineLen12();

b=LineLen23();

c=LineLen13();

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

return(area);

}

voidShow()

{cout<<"Triangle:

("<

cout<<"LineLen12="<

cout<<"LineLen13="<

cout<<"LineLen23="<

cout<<"AroundLen="<

cout<<"Area="<

}

};

voidmain()

{

cout<<"测试三角形类:

\n";

Triangletri(0,0,0,2,2,0);

tri.Show();

}

2、分数重载详细参考版

#include

#include

classFraction

{

intm,n;//m是分子,n是分母

public:

Fraction(intim=0,intin=1)

{

intt=gcd(im,in);

m=im/t;n=in/t;

if(m*n>0)//若分子和分母同号

{m=abs(m);n=abs(n);}

else//若分子和分母异号

{m=-abs(m);n=abs(n);};

}

intgcd(intx,inty);

Fraction&operator=(Fractionb)

{

m=b.m;n=b.n;

return*this;

}

Fractionoperator+(Fractionb)

{returnFraction(m*b.n+n*b.m,n*b.n);}

Fractionoperator-(Fractionb)

{returnFraction(m*b.n-n*b.m,n*b.n);}

friendFractionoperator*(Fractiona,Fractionb);

friendFractionoperator/(Fractiona,Fractionb);

voidShow()

{cout<

};

intFraction:

:

gcd(intx,inty)//返回的最大公约数是正数

{

intr;

if(x<0)x=-x;

if(y<0)y=-y;

while(r=x%y)

{x=y;y=r;}

returny;

}

Fractionoperator*(Fractiona,Fractionb)

{returnFraction(a.m*b.m,a.n*b.n);}

Fractionoperator/(Fractiona,Fractionb)

{returnFraction(a.m*b.n,a.n*b.m);}

voidmain()

{

Fractiona(1,3),b(3,-12),c;

cout<<"a=";a.Show();

cout<<"b=";b.Show();

c=a+b;

cout<<"a+b=";c.Show();

c=a-b;

cout<<"a-b=";c.Show();

c=a*b;

cout<<"a*b=";c.Show();

c=a/b;

cout<<"a/b=";c.Show();

}

2.2分数重载运算简化参考版

#include

#include

classFraction

{

intm,n;//m是分子,n是分母

public:

Fraction(intim=0,intin=1)

{

intt=gcd(im,in);

m=im/t;n=in/t;

if(m*n>0)//若分子和分母同号

{m=abs(m);n=abs(n);}

else//若分子和分母异号

{m=-abs(m);n=abs(n);};

}

intgcd(intx,inty);

Fractionoperator+(Fractionb)

{returnFraction(m*b.n+n*b.m,n*b.n);}

voidShow()

{cout<

};

intFraction:

:

gcd(intx,inty)//返回的最大公约数是正数

{

intr;

if(x<0)x=-x;

if(y<0)y=-y;

while(r=x%y)

{x=y;y=r;}

returny;

}

voidmain()

{

Fractiona(1,3),b(3,-12),c;

cout<<"a=";a.Show();

cout<<"b=";b.Show();

c=a+b;

}

3、矩阵运算符重载详细参考版

#include

classMatrix

{public:

Matrix();

friendMatrixoperator+(Matrix&,Matrix&);

friendostream&operator<<(ostream&,Matrix&);

friendistream&operator>>(istream&,Matrix&);

private:

intmat[2][3];

};

Matrix:

:

Matrix()

{for(inti=0;i<2;i++)

for(intj=0;j<3;j++)

mat[i][j]=0;

}

Matrixoperator+(Matrix&a,Matrix&b)

{Matrixc;

for(inti=0;i<2;i++)

for(intj=0;j<3;j++)

{c.mat[i][j]=a.mat[i][j]+b.mat[i][j];

}

returnc;

}

istream&operator>>(istream&in,Matrix&m)

{cout<<"inputvalueofmatrix:

"<

for(inti=0;i<2;i++)

for(intj=0;j<3;j++)

in>>m.mat[i][j];

returnin;

}

ostream&operator<<(ostream&out,Matrix&m)

{for(inti=0;i<2;i++)

{for(intj=0;j<3;j++)

{out<

out<

returnout;

}

intmain()

{Matrixa,b,c;

cin>>a;

cin>>b;

cout<

"<

cout<

"<

c=a+b;

cout<

"<

return0;

}

4、根据以下程序运行结果,结合测试程序,设计类

运行结果为:

55-44=11

voidmain()

{

Testt1;

t1.set(55,44);

t1.show();

}

#include"iostream.h"

classTest

{

inta1,a2;

public:

voidset(intx,inty){a1=x;a2=y;}

voidshow(){cout<

};

5.#include

usingnamespacestd;

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

voiddisplay();

private:

intnum;

floatscore;

};

voidStudent:

:

display()

{cout<

intmain()

{Studentstud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

Student*p=stud;

for(inti=0;i<=2;p=p+2,i++)

p->display();

return0;

}

6、#include

usingnamespacestd;

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

intnum;

floatscore;

};

voidmain()

{Studentstud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

voidmax(Student*);

Student*p=&stud[0];

max(p);

}

voidmax(Student*arr)

{floatmax_score=arr[0].score;

intk=0;

for(inti=1;i<5;i++)

if(arr[i].score>max_score){max_score=arr[i].score;k=i;}

cout<

}

7、#include

usingnamespacestd;

classProduct

{public:

Product(intn,intq,floatp):

num(n),quantity(q),price(p){};

voidtotal();

staticfloataverage();

staticvoiddisplay();

private:

intnum;

intquantity;

floatprice;

staticfloatdiscount;

staticfloatsum;

staticintn;

};

voidProduct:

:

total()

{floatrate=1.0;

if(quantity>10)rate=0.98*rate;

sum=sum+quantity*price*rate*(1-discount);

n=n+quantity;

}

voidProduct:

:

display()

{cout<

cout<

}

floatProduct:

:

average()

{return(sum/n);}

floatProduct:

:

discount=0.05;

floatProduct:

:

sum=0;

intProduct:

:

n=0;

intmain()

{

ProductProd[3]={

Product(101,5,23.5),Product(102,12,24.56),Product(103,100,21.5)

};

for(inti=0;i<3;i++)

Prod[i].total();

Product:

:

display();

return0;

}

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

当前位置:首页 >

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

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