0
点赞
收藏
分享

微信扫一扫

抽象数据类型的表示与实现——复数运算 (C语言)

#include<stdio.h>
typedef struct{
float imagpart; //虚部
float realpart; //实部
}Complex; //定义复数的抽象数据类型


void Assign(Complex*A,float real,float imag);
void Add(Complex A, Complex B,Complex*C);
void Minus(Complex A,Complex B,Complex*C);
void Multiply(Complex A,Complex B,Complex*C);
void Gonger(Complex*Z); //函数的声明。
void Divide(Complex A,Complex B,Complex*C);



void Assign(Complex*A,float real,float imag) //给 定义的复数抽象数据类型 赋值
{
A->realpart=real;
A->imagpart=imag;
}

void Add(Complex A, Complex B,Complex*C) //该函数功能是 复数求和
{
C->realpart=A.realpart+B.realpart;
C->imagpart=A.imagpart+B.imagpart;
}
void Minus(Complex A,Complex B,Complex*C) //该函数功能是 复数相减
{
C->realpart=A.realpart-B.realpart;
C->imagpart=A.imagpart-B.imagpart;
}
void Multiply(Complex A,Complex B,Complex*C) //该函数功能是 实现两个复数相乘
{
C->realpart=A.realpart*B.realpart-A.imagpart*B.imagpart;
C->imagpart=A.imagpart*B.realpart+A.realpart*B.imagpart;
}
void Gonger(Complex*Z) //求共轭复数 因为下面复数相除要用到共轭复数
{
Z->imagpart=-(Z->imagpart);
}
void Divide(Complex A,Complex B,Complex*C) //该函数功能是 实现两个复数相除
{
Gonger(&B);
C->realpart=(A.realpart*B.realpart+A.imagpart*B.imagpart)/(B.imagpart*B.imagpart+B.realpart*B.realpart);
C->imagpart=(A.imagpart*B.realpart+A.realpart*B.imagpart)/(B.imagpart*B.imagpart+B.realpart*B.realpart);
}


int main()
{
Complex x1,x2,x3,x4,X;
Assign(&x1,5.0,8.0); //给复数x1赋值
printf("%lf %lf\n",x1.realpart,x1.imagpart);
Assign(&x2,4.0,3.0); //给复数x2赋值;
printf("%lf %lf\n",x2.realpart,x2.imagpart);

Add(x1,x2,&x3); // 这里以&打头的参x3表示 引用型参数
printf("%lf %lf\n",x3.realpart,x3.imagpart);

Multiply(x1,x2,&x4); //两个复数相乘
printf("%lf %lf\n",x4.realpart,x4.imagpart);

Divide(x4,x3,&X); //两个复数相除
printf("%lf %lf\n",X.realpart,X.imagpart);

return 0;

}

复数的乘法要注意

设z 1 =a+bi,z 2 =c+di (a、b、c、d∈ R )是任意两个复数,

那么它们的积 (a+bi) (c+di)= (ac-bd)+ (bc+ad)i

复数的除法要注意

涉及到复数除法的计算。

可以把​​除法​​换算成​​乘法​​做,在分子​​分母​​同时乘上分母的共轭。

抽象数据类型的表示与实现——复数运算 (C语言)_抽象数据类型




举报

相关推荐

0 条评论