c++运算符重载习题.docx

上传人:b****1 文档编号:192895 上传时间:2022-10-06 格式:DOCX 页数:14 大小:56.77KB
下载 相关 举报
c++运算符重载习题.docx_第1页
第1页 / 共14页
c++运算符重载习题.docx_第2页
第2页 / 共14页
c++运算符重载习题.docx_第3页
第3页 / 共14页
c++运算符重载习题.docx_第4页
第4页 / 共14页
c++运算符重载习题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

c++运算符重载习题.docx

《c++运算符重载习题.docx》由会员分享,可在线阅读,更多相关《c++运算符重载习题.docx(14页珍藏版)》请在冰豆网上搜索。

c++运算符重载习题.docx

Task8-1

/*

1. 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。

将运算符函数重载为非成员、非友元的普通函数。

编写程序,求两个复数之和

*/

#include

usingnamespacestd;

classComplex

{

public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

voiddisplay();

doublereal;

doubleimag;

};

voidComplex:

:

display()

{

cout<<"("<

}

Complexoperator+(Complex&c1,Complex&c2)

{

Complexp;

p.real=c1.real+c2.real;

p.imag=c1.imag+c2.imag;

returnp;

}

intmain()

{

Complexc1(3,5),c2(2,5),c3;

c1.display();

cout<<"+";

c2.display();

cout<<"=";

c3=c1+c2;

c3.display();

}

Task8-2

/*2. 定义一个复数类Complex,重载运算符“+”、”-“、”*”、”/”,

使之能用于复数的加、减、乘、除。

运算符重载函数作为Complex类的成员函数,

编程,分别求两个复数之和差积商。

*/

#include

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

Complexoperator+(Complex&c2);

Complexoperator-(Complex&c2);

Complexoperator*(Complex&c2);

Complexoperator/(Complex&c2);

voiddisplay();

private:

doublereal;

doubleimag;

};

ComplexComplex:

:

operator+(Complex&c2)

{Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;

}

ComplexComplex:

:

operator-(Complex&c2)

{Complexc;

c.real=real-c2.real;

c.imag=imag-c2.imag;

returnc;

}

ComplexComplex:

:

operator*(Complex&c2)

{Complexc;

c.real=real*c2.real;

c.imag=imag*c2.imag;

returnc;

}

ComplexComplex:

:

operator/(Complex&c2)

{Complexc;

c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);

c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);

returnc;

}

voidComplex:

:

display()

{cout<<"("<

}

intmain()

{Complexc1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c1+c2=";

c3.display();

c3=c1-c2;

cout<<"c1-c2=";

c3.display();

c3=c1*c2;

cout<<"c1*c2=";

c3.display();

c3=c1/c2;

cout<<"c1/c2=";

c3.display();

return0;

}

Task8-3

/*

3. 有两个矩阵a和b,均为n行m列(m、n的值自己给出),

求两个矩阵之和、差、积、商,重载运算符“+”、”-“、”*”、”/”,

使之能用于矩阵向加减乘除,如c=a+b、c=a*b。

*/

#include

#definen2

#definem3

usingnamespacestd;

classMatrix//定义Matrix类

{public:

Matrix();//默认构造函数

friendMatrixoperator+(Matrix&,Matrix&);//重载运算符“+”

friendMatrixoperator-(Matrix&,Matrix&);

friendMatrixoperator*(Matrix&,Matrix&);

friendMatrixoperator/(Matrix&,Matrix&);

voidinput();//输入数据函数

voiddisplay();//输出数据函数

private:

intmat[n][m];

};

Matrix:

:

Matrix()//定义构造函数

{for(inti=0;i

for(intj=0;j

mat[i][j]=0;

}

Matrixoperator+(Matrix&a,Matrix&b)//定义重载运算符“+”函数

{Matrixc;

for(inti=0;i

for(intj=0;j

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

returnc;

}

Matrixoperator-(Matrix&a,Matrix&b)//定义重载运算符“+”函数

{Matrixc;

for(inti=0;i

for(intj=0;j

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

returnc;

}

Matrixoperator*(Matrix&a,Matrix&b)//定义重载运算符“+”函数

{Matrixc;

for(inti=0;i

for(intj=0;j

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

returnc;

}

Matrixoperator/(Matrix&a,Matrix&b)//定义重载运算符“+”函数

{Matrixc;

for(inti=0;i

for(intj=0;j

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

returnc;

}

voidMatrix:

:

input()//定义输入数据函数

{cout<<"inputvalueofmatrix:

"<

inti,j;

for(i=0;i

{

for(j=0;j

{

cin>>mat[i][j];

}

}

}

voidMatrix:

:

display()//定义输出数据函数

{for(inti=0;i

{for(intj=0;j

{cout<

cout<

}

intmain()

{

Matrixa,b,c;

a.input();

b.input();

cout<

"<

a.display();

cout<

"<

b.display();

c=a+b;//用重载运算符“+”实现两个矩阵相加

cout<

"<

c.display();

c=a-b;//用重载运算符“+”实现两个矩阵相加

cout<

"<

c.display();

c=a*b;//用重载运算符“+”实现两个矩阵相加

cout<

"<

c.display();

c=a/b;//用重载运算符“+”实现两个矩阵相加

cout<

"<

c.display();

return0;

}

Task8-4

/*

4. 在第三题的基础上,重载运算符>>和<<,使之能用于该矩阵的输入和输出。

*/

#include

#definen2

#definem3

usingnamespacestd;

classMatrix//定义Matrix类

{public:

Matrix();//默认构造函数

friendMatrixoperator+(Matrix&,Mat

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

当前位置:首页 > 人文社科 > 文化宗教

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

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