#include <stdio.h>
#include <math.h>
#include "complex.h"
/*
complex.h 复数定义
*/
typedef struct Complex //复数类型
{
float Realpart; //实部
float Imagepart; //虚部
}Complex;
Complex Complex_Create(float x, float y)//给定复数的虚部和实部,并返回复数
{//构造一个复数
Complex C;
C.Realpart = x;
C.Imagepart = y;
return C;
}
float GetReal(Complex C)
{//取复数C=x+yi的实部
return C.Realpart;
}
float GetImag(Complex C)
{//取复数C=x+yi的虚部
return C.Imagepart;
}
void Print_C(Complex C)
{//复数输出并控制格式
if(C.Realpart==0&&C.Imagepart==0)
printf("0\n");
else if(C.Realpart!=0&&C.Imagepart==0)
printf("%.3f\n");
else if(C.Realpart==0&&C.Imagepart!=0)
{
if(C.Imagepart>0)
printf("%.3fi\n",C.Imagepart);
else if(C.Imagepart<0)
printf("-%.3fi\n",fabs(C.Imagepart));
}
else
{
if(C.Imagepart>0)
printf("%.3f+%.3fi\n", C.Realpart,C.Imagepart);
else
printf("%.3f-%.3fi\n", C.Realpart,fabs(C.Imagepart));
}
}
Complex Add(Complex C1, Complex C2)
{//求两个复数C1和C2的和Sum
Complex Sum;
Sum.Realpart = C1.Realpart + C2.Realpart;
Sum.Imagepart = C1.Imagepart + C2.Imagepart;
return Sum;
}
Complex Sub(Complex C1, Complex C2)
{//求两个复数C1和C2的差difference
Complex difference;
difference.Realpart = C1.Realpart - C2.Realpart;
difference.Imagepart = C1.Imagepart - C2.Imagepart;
return difference;
}
Complex Pro(Complex C1, Complex C2)
{//求两个复数C1和C2的积Product
Complex Product;
Product.Realpart = C1.Realpart * C2.Realpart - C1.Imagepart * C2.Imagepart;
Product.Imagepart = C1.Realpart * C2.Imagepart + C1.Imagepart * C2.Realpart;
return Product;
}
Complex Div(Complex C1, Complex C2)
{//求两个复数C1和C2的商Divide
Complex Divide;
Divide.Realpart = (C1.Realpart * C2.Realpart + C1.Imagepart * C2.Imagepart)
/(C2.Realpart * C2.Realpart + C2.Imagepart * C2.Imagepart);
Divide.Imagepart = (C1.Imagepart * C2.Realpart - C1.Realpart * C2.Imagepart)
/(C2.Realpart * C2.Realpart + C2.Imagepart * C2.Imagepart);
return Divide;
}
int main()
{
Complex C1,C2; //C1,C2为复数
Complex Plus; //加法
Complex Reduce; //减法
Complex Ride; //乘法
Complex Except; //除法
float e1,e2,e3,e4; //e1、e3实部,e2、e4虚部
scanf("%f %f", &e1, &e2);
C1 = Complex_Create(e1,e2); //提示输入复数z1,并存入变量中
scanf("%f %f", &e3, &e4);
C2 = Complex_Create(e3,e4); //提示输入复数z2,并存入变量中
printf("复数C1 = %f + %fi\n", C1.Realpart,C1.Imagepart);
printf("复数C2 = %f + %fi", C2.Realpart,C2.Imagepart);
Plus = Add(C1,C2);
Reduce = Sub(C1,C2);
Ride = Pro(C1,C2);
Except = Div(C1,C2);
printf("\n这两个复数的和 = ");Print_C(Plus); //显示求和的结果
printf("这两个复数的差 = ");Print_C(Reduce); //显示求差的结果
printf("这两个复数的积 = ");Print_C(Ride); //显示求积的结果
printf("这两个复数的商 = ");Print_C(Except); //显示求商的结果
return 0;
}
0.000i
41行
printf("%.3f\n")
你没写输出变量啊