14、设计一个完整的复数complex类,要求利用运算符重载实现复数的加法(+)、减法(-)、乘法(*)运算

 我来答
陈宗权8d804
2011-01-13 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:948万
展开全部
这是我以前写的一个演示程序,正好适合,你给你吧。
我对输出做了优化,更符合数学上的习惯。
/***********************************************************
* 复数类演示程序
* 陈宗权,2007/5
***********************************************************/
#include <iostream>
#include <cmath>
using namespace std;
class Complex{//定义复数类
double real;//实部
double image;//虚部
public:
Complex( double r=0.0,double i=0.0 )//构造
:real(r),image(i)//初始化列表
{}
Complex operator+( const Complex& cc )const//两个复数相加
{
return Complex(real+cc.real,image+cc.image);
}
Complex operator-( const Complex& cc )const//两个复数相减
{
return Complex(real-cc.real,image-cc.image);
}
Complex operator*( const Complex& cc )const//两个复数相加
{
double r=real*cc.real-image*cc.image;
double i=image*cc.real+real*cc.image;
return Complex(r,i);
}
//输出复数信息
friend ostream& operator<<(ostream&o, const Complex& c)
{
//实部非零输出实部
if( c.real!=0 ){
o << c.real;
}
if( c.image!=0 ){//虚部非零则输出虚部和i
if( c.image>0 && c.real!=0 )//如果虚部为正且实部非零则输出+号
o << '+';
if( c.image<0 )
o << '-';
if( abs(c.image)!=1 )
o << abs(c.image);
o << 'i';//输出虚部标识字符i
}
if( c.real==0&&c.image==0 )//整个复数为零输出零
o << 0;
return o;//返回输出流对象本身
}
};
int main()
{
Complex c1, c2(2), c3(3,1), c4(3,-4);
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
cout<<"c3="<<c3<<endl;
cout<<"c4="<<c4<<endl;
cout<<"c3+c4="<<c3+c4<<endl;
cout<<"c3-c4="<<c3-c4<<endl;
cout<<"c3*c4="<<c3*c4<<endl;
return 0;
}
军军106
2011-01-13 · TA获得超过453个赞
知道小有建树答主
回答量:1747
采纳率:0%
帮助的人:758万
展开全部
教材上有啊,C++标准库中也有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
能力JJ
2011-01-13
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式