定义一个表示复数的抽象数据类型
typedef struct //构建复数框架
{
float Realpart; //实部
float Imagepart; //虚部
}Complex;
本文解决以下编程问题:
1、编写函数,输入实部和虚部建立一个复数;
2、编写函数,求两个复数的和;
3、编写函数,求两个复数的积;
4、编写两个函数,分别求复数的实部和虚部。
一、各函数具体展示:
编写函数,输入实部和虚部建立一个复数;
Complex Create(float x,float y) //用输入的实部、虚部建立一个复数
{
Complex Cx;
Cx.Realpart=x;
Cx.Imagepart=y;
return Cx;
}
编写函数,求两个复数的和;
Complex Add(Complex C1,Complex C2) //求两个复数之和
{
Complex sum; //定义一个Complex结构体类型的变量sum
sum.Realpart=C1.Realpart+C2.Realpart;
sum.Imagepart=C1.Imagepart+C2.Imagepart;
return sum;
}
编写函数,求两个复数的积;
Complex Multiply(Complex C1,Complex C2) //求两个复数之积
{
Complex z;
z.Realpart=C1.Realpart*C2.Realpart-C1.Imagepart*C2.Imagepart;
z.Imagepart=C1.Realpart*C2.Imagepart+C1.Imagepart*C2.Realpart;
return z;
}
编写两个函数,分别求复数的实部和虚部。
float GetReal(Complex C) //取实部
{
return C.Realpart;
}
float GetImage(Complex C) //取虚部
{
return C.Imagepart;
}
二、完整代码(含各函数及main):
#include <iostream.h>
typedef struct //构建复数框架
{
float Realpart;
float Imagepart;
}Complex;
Complex Create(float x,float y); //用输入的实部、虚部建立一个复数
Complex Add(Complex C1,Complex C2); //求两个复数之和
Complex Multiply(Complex C1,Complex C2); //求两个复数之积
float GetReal(Complex C); //取复数的实部
float GetImage(Complex C); //取复数的虚部
int main(int argc, char *argv[])
{
float fReal1,fImage1,fReal2,fImage2;
cout<<"欲建立一个复数!请分别输入其实部和虚部:"<<endl;
cin>>fReal1>>fImage1;
Complex C1=Create(fReal1,fImage1); //输入实部和虚部建立一个复数(名为C1)
if(fImage1<0)
{
cout<<"所建立的复数为:"<<C1.Realpart<<C1.Imagepart<<"i"<<endl<<endl;
}
else {cout<<"所建立的复数为:"<<C1.Realpart<<"+"<<C1.Imagepart<<"i"<<endl<<endl;}
cout<<"欲再建立一个复数!请分别输入其实部和虚部:"<<endl;
cin>>fReal2>>fImage2;
Complex C2=Create(fReal2,fImage2); //输入实部和虚部建立一个复数(名为C2)
if(fImage2<0)
{
cout<<"所建立的第二个复数为:"<<C2.Realpart<<C2.Imagepart<<"i"<<endl<<endl;
}
else {cout<<"所建立的第二个复数为:"<<C2.Realpart<<"+"<<C2.Imagepart<<"i"<<endl<<endl;}
Complex Cadd=Add(C1,C2);
if(Cadd.Imagepart<0)
{
cout<<"两个复数之和:"<<Cadd.Realpart<<Cadd.Imagepart<<"i"<<endl;
}
else {cout<<"两个复数之和:"<<Cadd.Realpart<<"+"<<Cadd.Imagepart<<"i"<<endl;}
Complex Cmul=Multiply(C1,C2);
if(Cmul.Imagepart<0)
{
cout<<"两个复数之积:"<<Cmul.Realpart<<Cmul.Imagepart<<"i"<<endl<<endl;
}
else {cout<<"两个复数之积:"<<Cmul.Realpart<<"+"<<Cmul.Imagepart<<"i"<<endl<<endl;}
cout<<"第一个复数的实部:"<<GetReal(C1)<<","<<"第一个复数的虚部:"<<GetImage(C1)<<endl;
cout<<"第二个复数的实部:"<<GetReal(C2)<<","<<"第二个复数的虚部:"<<GetImage(C2)<<endl;
return 0;
}
Complex Create(float x,float y) //用输入的实部、虚部建立一个复数
{
Complex Cx;
Cx.Realpart=x;
Cx.Imagepart=y;
return Cx;
}
Complex Add(Complex C1,Complex C2) //求两个复数之和
{
Complex sum; //sum复刻Complex框架
sum.Realpart=C1.Realpart+C2.Realpart;
sum.Imagepart=C1.Imagepart+C2.Imagepart;
return sum;
}
Complex Multiply(Complex C1,Complex C2) //求两个复数之积
{
Complex z;
z.Realpart=C1.Realpart*C2.Realpart-C1.Imagepart*C2.Imagepart;
z.Imagepart=C1.Realpart*C2.Imagepart+C1.Imagepart*C2.Realpart;
return z;
}
float GetReal(Complex C) //取实部
{
return C.Realpart;
}
float GetImage(Complex C) //取虚部
{
return C.Imagepart;
}
执行效果如下:
分享完毕~
欢迎小伙伴们在文下评论和私信喔~