C 语言-复数的四则运算

头歌C语言“复数四则运算”
#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)
{//求两个复数C1C2的和Sum
    Complex Sum;
    Sum.Realpart = C1.Realpart + C2.Realpart;
    Sum.Imagepart = C1.Imagepart + C2.Imagepart;
    return Sum;
}
Complex Sub(Complex C1, Complex C2)
{//求两个复数C1C2的差difference
    Complex difference;
    difference.Realpart = C1.Realpart - C2.Realpart;
    difference.Imagepart = C1.Imagepart - C2.Imagepart;
    return difference;
}
Complex Pro(Complex C1, Complex C2)
{//求两个复数C1C2的积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)
{//求两个复数C1C2的商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;    //e1e3实部,e2e4虚部
    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;
}

img

结果后面复数部分一直是

0.000i

41行
printf("%.3f\n")
你没写输出变量啊