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