c++运算符重载习题Word格式文档下载.docx
- 文档编号:16907354
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:19
- 大小:53.47KB
c++运算符重载习题Word格式文档下载.docx
《c++运算符重载习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c++运算符重载习题Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
Complexc1(3,5),c2(2,5),c3;
c1。
display();
cout<
+"
;
c2。
display();
”="
c3=c1+c2;
c3。
Task8—2
/*2。
定义一个复数类Complex,重载运算符“+”、”-“、”*”、”/"
使之能用于复数的加、减、乘、除。
运算符重载函数作为Complex类的成员函数,
编程,分别求两个复数之和差积商。
#include〈iostream〉
usingnamespacestd;
{public:
Complex(){real=0;
imag=0;
Complex(doubler,doublei){real=r;
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;
imag=imag+c2。
imag;
returnc;
operator—(Complex&c2)
{Complexc;
c.real=real—c2。
real;
imag=imag-c2。
imag;
operator*(Complex&c2)
c.real=real*c2.real;
c.imag=imag*c2。
operator/(Complex&
c2)
{Complexc;
real=(real*c2.real+imag*c2。
imag)/(c2.real*c2。
real+c2.imag*c2。
imag);
imag=(imag*c2.real—real*c2.imag)/(c2.real*c2.real+c2。
imag*c2。
imag);
returnc;
voidComplex:
{cout<
”(”<
real<
”,”<
endl;
{Complexc1(3,4),c2(5,—10),c3;
c3=c1+c2;
cout<
〈"
c1+c2=”;
c3。
c3=c1-c2;
c1—c2=”;
c3=c1*c2;
cout〈<
c1*c2="
c3.display();
c3=c1/c2;
”c1/c2="
return0;
Task8—3
/*
3。
有两个矩阵a和b,均为n行m列(m、n的值自己给出),
求两个矩阵之和、差、积、商,重载运算符“+”、”—“、"
*”、"
/”,
使之能用于矩阵向加减乘除,如c=a+b、c=a*b。
#include〈iostream〉
#definen2
#definem3
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〈n;
i++)
for(intj=0;
j<
m;
j++)
mat[i][j]=0;
Matrixoperator+(Matrix&
a,Matrix&
b)//定义重载运算符“+”函数
{Matrixc;
for(inti=0;
i<
n;
j〈m;
{c。
mat[i][j]=a.mat[i][j]+b.mat[i][j];
returnc;
Matrixoperator—(Matrix&a,Matrix&
{Matrixc;
{c.mat[i][j]=a。
mat[i][j]—b。
mat[i][j];
returnc;
Matrixoperator*(Matrix&a,Matrix&
{Matrixc;
i〈n;
for(intj=0;
j〈m;
{c.mat[i][j]=a。
mat[i][j]*b.mat[i][j];
Matrixoperator/(Matrix&
a,Matrix&b)//定义重载运算符“+"
函数
m;
mat[i][j]=a。
mat[i][j]/b.mat[i][j];
voidMatrix:
input()//定义输入数据函数
{cout<
inputvalueofmatrix:
”〈〈endl;
inti,j;
for(i=0;
for(j=0;
{
cin>
>
mat[i][j];
}
voidMatrix:
display()//定义输出数据函数
{for(inti=0;
{for(intj=0;
{cout〈〈mat[i][j]<
””;
cout〈〈endl;
Matrixa,b,c;
a。
input();
b.input();
cout〈<
endl〈<
”Matrixa:
”<
〈endl;
〈endl<
”Matrixb:
b。
c=a+b;
//用重载运算符“+"
实现两个矩阵相加
endl<
Matrixc=Matrixa+Matrixb:
”〈<
c.display();
c=a-b;
//用重载运算符“+”实现两个矩阵相加
endl〈〈"
Matrixc=Matrixa—Matrixb:
c。
c=a*b;
Matrixc=Matrixa*Matrixb:
c=a/b;
cout〈〈endl〈〈”Matrixc=Matrixa/Matrixb:
〈〈endl;
return0;
Task8—4
4。
在第三题的基础上,重载运算符>
和〈<
使之能用于该矩阵的输入和输出。
*/
#include<
#definem3
friendMatrixoperator+(Matrix&
Matrix&
,Matrix&
friendMatrixoperator*(Matrix&
friendMatrixoperator/(Matrix&
Matrix&);
friendostream&operator〈〈(ostream&,Matrix&);
friendistream&
operator〉〉(istream&,Matrix&
private:
intmat[n][m];
};
Matrix:
{for(inti=0;
mat[i][j]=0;
Matrixoperator+(Matrix&a,Matrix&b)//定义重载运算符“+”函数
{Matrixc;
n;
{c。
mat[i][j]=a.mat[i][j]+b。
mat[i][j];
Matrixoperator-(Matrix&
for(inti=0;
{c.mat[i][j]=a.mat[i][j]—b。
mat[i][j];
b)//定义重载运算符“+"
mat[i][j]=a。
mat[i][j]*b.mat[i][j];
a,Matrix&b)//定义重载运算符“+”函数
mat[i][j]=a.mat[i][j]/b。
mat[i][j];
ostream&
operator<
〈(ostream&
out,Matrix&c)
{
for(intj=0;
cout〈<
mat[i][j]〈〈’\t’;
cout〈<
endl;
returnout;
istream&operator>
〉(istream&
in,Matrix&
c)
for(intj=0;
cin〉〉c。
}
returnin;
{cout〈<
”inputvalueofmatrix:
〈〈endl;
inti,j;
for(j=0;
〉mat[i][j];
{for(intj=0;
{cout〈<
mat[i][j]<
〈”"
Matrixa,b,c;
”请输入第一个n*m矩阵"
cin〉〉a;
请输入第二个n*m矩阵”〈<
b;
〈”Matrixa:
a;
cout〈〈endl〈〈”Matrixb:
cout〈〈b;
c=a+b;
cout〈〈endl〈〈”Matrixc=Matrixa-Matrixb:
〈c;
c=a*b;
cout〈〈endl〈〈"
Matrixc=Matrixa*Matrixb:
”〈〈endl;
cout〈〈c;
c=a/b;
Matrixc=Matrixa/Matrixb:
c;
return0;
Task8—5
5.实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除
(运算后再化简)、求反、比较(6种关系)的运算.
#include<
stdlib.h>
intgcd(intm,intn);
classFraction
private:
intnume;
//分子
intdeno;
//分母
Fraction(intnu=0,intde=1);
//构造函数,初始化用
voidSet(intnu=0,intde=1);
//置值,改变值时用
Fractionoperator+(Fraction&
c2);
Fractionoperator-(Fraction&c2);
Fractionoperator*(Fraction&c2);
Fractionoperator/(Fraction&
c2);
booloperator>
=(Fraction&
Fractionoperator—();
voidSimplify();
//化简(使分子分母没有公因子)
};
Fraction:
Fraction(intnu,intde)
if(de!
=0)
nume=nu;
deno=de;
else
格式错误,程序退出\n”;
exit(0);
voidFraction:
Set(intnu,intde)
if(de!
nume=nu;
voidFraction:
nume〈<
’/'
〈deno<
//求分子,分母最大公约数
intgcd(intm,intn)
intr;
if(m<
n)
r=m;
m=n;
n=r;
while(r=m%n)
if(r==0)
break;
n=r;
returnn;
//将分数化简
Simplify()
intn=gcd(nume,deno);
nume=nume/n;
deno=deno/n;
nume<
〈’/’〈〈deno;
FractionFraction:
operator+(Fraction&c2)
Fractionc;
deno=deno*c2.deno;
nume=nume*c2.deno+c2.nume*deno;
operator-(Fraction&
Fractionc;
c.deno=deno*c2。
deno;
nume=nume*c2.deno-c2。
nume*deno;
FractionFraction:
operator*(Fraction&c2)
c.deno=deno*c2。
deno;
nume=nume*c2.nume;
operator/(Fraction&
c.deno=deno*c2.nume;
nume=nume*c2.deno;
boolFraction:
operator〉=(Fraction&
nume=nume*c2.nume;
c2.nume=c2.nume*deno;
if(nume〉=c2。
nume)
returntrue;
returnfalse;
operator—()
nume=—nume;
c.deno=deno;
Fractionc1(1,2),c2(5,8),c;
cout〈〈”c1=”;
c1.display();
cout〈〈”c2="
c=c1+c2;
”c1+c2="
Simplify();
c=c1—c2;
c1-c2=”;
c.Simplify();
c=c1*c2;
c1*c2=”;
c=c1/c2;
c1/c2=”;
Simplify();
〈endl;
c=—c1;
”—c1="
c.Simplify();
if(c1>
=c2)cout〈〈”c1>
=c2"
system(”pause"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 运算 重载 习题