复数的基本运算(C语言)
#include
#include
typedef struct fushu//抽象数据类型定义
{
float real;//数据对象
float image;
}fushu;
fushu ComplexNumberInput(float a,float b)//构造二元组
{
fushu c;
c.real=a;//实部
c.image=b;//虚部
return(c);
}
fushu ComplexNumberAdd(fushu c1,fushu c2)//求和运算
{
fushu sum;
sum.real=c1.real+c2.real;
sum.image=c1.image+c2.image;
return (sum);
}
fushu ComplexNumberSub(fushu c1,fushu c2)//求差运算
{
fushu sub;
sub.real=c1.real-c2.real;
sub.image=c1.image-c2.image;
return (sub);
}
fushu ComplexNumberMul(fushu c1,fushu c2)//求积运算
{
fushu Mul;
Mul.real=c1.real*c2.real-c1.image*c2.image;
Mul.image=c1.real*c2.image+c1.image*c2.real;
return (Mul);
}
fushu ComplexNumberDiv(fushu c1,fushu c2)//求商运算
{
fushu div;
float d1,d2,d3,d4;
d1=c1.real*c2.real+c1.image*c2.image;
d2=c2.real*c2.real+c2.image*c2.image;
d3=c1.image*c2.real-c1.real*c2.image;
d4=c2.real*c2.real+c2.image*c2.image;
if(d2!=0&&d4!=0)
{
div.real=d1/d2;
div.image=d3/d4;
return(div);
}
else
{
div.real=0;
div.image=0;
return(div);
}
}
void ComplexNumberOutput(fushu c)//输出运算结果
{
if(c.real==0.0&&c.image==0.0) printf("0\n");
if(c.real==0.0&&c.image!=0.0) printf("%fi\n",c.image);
if(c.real!=0.0&&c.image==0.0) printf("%f\n",c.real);
if(c.real!=0.0&&c.image!=0.0) printf("%f+(%fi)\n",c.real,c.image);
}
void main()//主函数
{
int choice;
int k;
float a1,a2,b1,b2;
struct fushu c1,c2,sum,sub,mult,div;
printf("欢迎进行复数的基本代数运算\n");
printf("1: 复数加法运算\n");
printf("2: 复数减法运算\n");
printf("3: 复数乘法运算\n");
printf("4: 复数除法运算\n");
printf("0: 推出系统\n");
printf("请分别输入第一个复数的实部和虚部: ");
scanf("%f%f",&a1,&b1);
c1 = ComplexNumberInput(a1,b1);
printf("第一个复数为: ");
ComplexNumberOutput(c1);
printf("请分别输入第二个复数的实部和虚部: ");
scanf("%f%f",&a2,&b2);
c2 = ComplexNumberInput(a2,b2);
printf("第二个复数为: ");
ComplexNumberOutput(c2);
for(;;)
{
printf("请输入你选择的功能: ");
scanf("%d",&choice);
swit