C++总复习习题讲解.docx
- 文档编号:12368197
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:17
- 大小:16.80KB
C++总复习习题讲解.docx
《C++总复习习题讲解.docx》由会员分享,可在线阅读,更多相关《C++总复习习题讲解.docx(17页珍藏版)》请在冰豆网上搜索。
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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C++ 复习 习题 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)