复数的抽象数据类型实现(指针)

摘要:C语言  数据结构 

正文:这是运用指针来进行复数的抽象数据类型实现,代码如下;

#include<stdio.h>
#include<stdlib.h>
typedef struct Complex
{
float real;
float image;
}Complex;
int lnitComplex(Complex *p,float vr,float vi)
{
p->real=vr;
p->image=vi;
return 1;
}
void OutComplex(Complex C)
{
printf("%f+%fi",C.real,C.image);
}
Complex AddComplex(Complex *p,Complex C1,Complex C2)
{
p->real=C1.real+C2.real;
p->image=C1.image+C2.image;
return *p;
}
Complex SubComplex(Complex *p,Complex C1,Complex C2)
{
p->real=C1.real-C2.real;
p->image=C1.image-C2.image;
return *p;
}
Complex MulComplex(Complex *p,Complex C1,Complex C2)
{
p->real=((C1.real*C2.real)-(C1.image*C2.image));
p->image=((C1.real*C2.image)+(C1.image*C2.real));
return *p;
}
int main()
{
int choice;
float a,b;
Complex C,C1,C2;
printf("*********************\n");
printf("1.输入复数C1\n");
printf("2.输入复数C2\n");
printf("3.输出复数C1\n");
printf("4.输出复数C2\n");
printf("5.C1和C2的和为\n");
printf("6.C1和C2的差为\n");
printf("7.C1和C2的积为\n");
printf("0.结束程序\n");
printf("**********************\n");
for(;;)
{
printf("请输入选项:\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("请输入实部虚部:\n");
scanf("%f,%f",&a,&b);
lnitComplex(&C1,a,b);
break;
case 2:
printf("请输入实部虚部:\n");
scanf("%f,%f",&a,&b);
lnitComplex(&C2,a,b);
break;
case 3:
OutComplex(C1);
break;
case 4:
OutComplex(C2);
break;
case 5:
AddComplex(&C,C1,C2);
OutComplex(C);
break;
case 6:
SubComplex(&C,C1,C2);
OutComplex(C);
break;
case 7:
MulComplex(&C,C1,C2);
OutComplex(C);
break;
case 0:
exit(0);

}
}
}




编译结果如图:

复数的抽象数据类型实现(指针)