实验 C++实现复数的加减乘除
试用C语言的结构类型定义表示复数Complex的抽象数据类型。
(1)在复数内部用浮点数定义其实部与虚部;
(2)设计实现复数的+、-、、等运算的函数。
基本操作函数接口:
InitComplex( &Z, v1, v2 ):操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。
GetReal( Z, &realPart ):初始条件:复数已存在。
操作结果:用realPart返回复数Z的实部值。
GetImag( Z, &ImagPart ):初始条件:复数已存在。
操作结果:用ImagPart返回复数Z的虚部值。
Add( z1,z2, &sum ):初始条件:z1,z2是复数。
操作结果:用sum返回两个复数z1,z2的和值。
Sub( z1,z2, &residue):初始条件:z1,z2是复数。
操作结果:用res返回两个复数z1,z2的差值。
mul( z1,z2, &product ):初始条件:z1,z2是复数。
操作结果:用product返回两个复数z1,z2的积。
div( z1,z2, "ient,&residue):初始条件:z1,z2是复数。
操作结果:用quotient 返回两个复数z1除z2的商, 用residue返回它们的余数。
要求main函数中只能是基本的输入输出语句和函数调用语句,其运行界面如下:
please input first complex number : a + bi
the other one : c+ di
please choice operation: +, -, * or /:+
(a + bi)+ (c+ di)=……
其中a,b,c,d是用户从键盘上输入的实型值,分别代表两个复数的实部和虚部。
实验代码:
#include//定义一个复数类
typedef struct {
float realpart;
float imagpart;
}Complex;
Complex InitComplex(float v1,float v2) //初始化
{ Complex z;
z.realpart=v1;
z.imagpart=v2;
return z;
}
float Getreal(Complex z)
{return z.realpart;
}
float Getimagepart(Complex z)
{return z.imagpart;
}
Complex Add(Complex z1,Complex z2) //实现加法运算
{
z1.realpart=z1.realpart+z2.realpart;
z1.imagpart=z1.imagpart+z2.imagpart;
return z1;
}
Complex Sub(Complex z1,Complex z2) //实现减法运算
{z1.realpart=z1.realpart-z2.realpart;
z1.imagpart=z1.imagpart-z2.imagpart;
return z1;
}
Complex Mul(Complex z1,Complex z2) //实现乘法运算
{z1.realpart=z1.realpart*z2.realpart;
z1.imagpart=z1.imagpart*z2.imagpart;
return z1;
}
Complex Div(Complex z1,Complex z2) // 实现除法运算
{z1.realpart=z1.realpart/z2.realpart;
z1.imagpart=z1.imagpart/z2.imagpart;
return z1;
}
int main ()
{ float a,b,c,d;
char e;
Complex z1,z2,z3;
printf("please input first complex number a+bi:"); //只需输入实部a,虚部b
scanf("%f %f",&a,&b);
z1= InitComplex(a,b);
printf("please input the other :");
scanf("%f %f",&c,&d);
z2=InitComplex(c,d);
printf("please choice operation :+,-,*,/ :"); //选择运算符
getchar();
scanf("%c",&e);
if (e==+) //选择运算符
z3= Add( z1,z2);
if(e==-)
z3=Sub(z1,z2);
if(e==*)
z3=Mul(z1,z2);
if(e==/)
z3=Div(z1, z2);
printf("%f+%fi",z3.realpart,z3.imagpart);
return 0;
}
运行结果: