用C构造复数的抽象数据类型
# include <stdio.h>
typedef struct {
float realpart;
float imagpart;
}Complex; /*定义复数抽象数据类型*/
void assign(Complex* A, float real, float imag) {
A->realpart = real;
A->imagpart = imag;
} //构造复数的函数,函数名为assign
void add(Complex* c, Complex A, Complex B) {
c->realpart = A.realpart + B.realpart;
c->imagpart = A.imagpart + B.imagpart;
}//实现复数相减的函数,函数名为add
void minus(Complex* c, Complex A, Complex B) {
c->realpart = A.realpart - B.realpart;
c->imagpart = A.imagpart - B.imagpart;
}//实现复数相加的函数,函数名为minus
int main(void) {
Complex z1, z2,z3,z4;
assign(&z1, 3, 2);//调用assign函数,构造复数z1
printf("z1=%f+(%f)i\n", z1.realpart, z1.imagpart);
assign(&z2, 4, 5);//调用assign函数,构造复数z2
printf("z2=%f+(%f)i\n", z2.realpart, z2.imagpart);
add(&z3, z1, z2);//调用add函数,实现z1和z2相加
printf("复数之和:z3=%f+(%f)i\n",z3.realpart,z3.imagpart );
minus(&z4, z2,z1);//调用add函数,实现z1和z2相减
printf("复数之差为:z4=%f+(%f)i\n", z4.realpart,z4.imagpart);
return 0;
}
上述代码输出结果如下图,复数的乘除同理可编写出相应函数,并调用实现。