编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:
要求:(1)定义一个结构体类型来描述复数。
(2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
(3)必须使用结构体指针的方法把函数的计算结果返回。
说明:用户输入:运算符号(+,-,*,/) a b c d.
输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。
输入:
- 2.5 3.6 1.5 4.9
输出:
1.00+-1.30i
难度不大,就是单纯需要复数四则运算知识,结构体指针知识和结构体指针输出知识
(PS:固执地想用cout输出)
#include<iostream>
using namespace std;
struct fu
{
double a;
double b;
};
struct fu *add(fu *x,fu *y)
{
(*x).a=(*x).a+(*y).a;
(*x).b=(*x).b+(*y).b;
return x;
}
struct fu *jian(fu *x,fu *y)
{
(*x).a=(*x).a-(*y).a;
(*x).b=(*x).b-(*y).b;
return x;
}
struct fu *cheng(fu *x,fu *y)
{
//(ac-bd)+(bc+ad)i
double aa=(*x).a,bb=(*x).b,cc=(*y).a,dd=(*y).b;
(*x).a=aa*cc-bb*dd;
(*x).b=bb*cc+aa*dd;
return x;
}
struct fu *chu(fu *x,fu *y)
{
//:(a+bi)/(c+di)=
//(ac+bd)/(c方+d方) +((bc-ad)/(c方+d方))i
double aa=(*x).a,bb=(*x).b,cc=(*y).a,dd=(*y).b;
(*x).a=(aa*cc+bb*dd)/(cc*cc+dd*dd);
(*x).b=(bb*cc-aa*dd)/(cc*cc+dd*dd);
return x;
}
int main()
{
struct fu xx;
struct fu yy;
struct fu *x=new fu;
struct fu *y=new fu;
char qq;
cin>>qq>>xx.a>>xx.b;//y->a>>y->b;
x=&xx;
cin>>yy.a>>yy.b;
y=&yy;
if(qq=='+')
{
// cout<<"+"<<endl;
x=add(x,y);
}
else if(qq=='-')
{
// cout<<"-"<<endl;
x=jian(x,y);
}
else if(qq=='*')
{
// cout<<"*"<<endl;
x=cheng(x,y);
}
else
{
// cout<<"/"<<endl;
x=chu(x,y);
}
printf("%.2f",(x->a));
cout<<"+";
printf("%.2f",(x->b));
cout<<"i"<<endl;
return 0;
}