关于复数 我的结果总是0+0i

关于复数  我的结果总是0+0i

问题描述:

/*
复数抽象数据类型ADT的描述
ADT Complex{
数据对象:D={c1,c2|c1,c2∈ FloatSet}
数据关系:R={<c1,c2>,c1是复数的实部,c2是复数的虚部};
基本操作:创建一个复数 creat(a);
输出一个复数 output(a);
求两个复数相加 add(a,b);
求两个复数相乘 multi(a,b)
*/

#include<stdio.h>

struct ADTComplex{
float c1;//复数实部
float c2;//复数虚部
};

struct ADTComplex creat(struct ADTComplex A)//创建一个复数
{
float a,b;
scanf("%f %f",&a,&b);

A.c1=a;A.c2=b;
return A;

}

void output(struct ADTComplex sum) //输出一个复数
{
if(sum.c2<0) printf("%.2f%.2fi\n",sum.c1,sum.c2);
else printf("%.2f+%.2fi\n",sum.c1,sum.c2);
}

struct ADTComplex add(struct ADTComplex A,struct ADTComplex B)//求两个复数相加
{
struct ADTComplex sum;
sum.c1=A.c1+B.c1;
sum.c2=A.c2+B.c2;
return sum;
}

struct ADTComplex multi(struct ADTComplex A,struct ADTComplex B)//求两个复数相乘
{
struct ADTComplex chengji;
chengji.c1=A.c1B.c1-A.c2B.c2 ;
chengji.c2=A.c1B.c2+A.c2B.c1;
return chengji;
}

int main()
{
struct ADTComplex A,B,sum,chengji;

creat(A);
creat(B);

sum=add(A,B);
chengji=multi(A,B);

output(sum);
output(chengji);


return 0;

}

未更新A和B,具体见下方代码注释
目前简单测试能够正常输出
有帮助望采纳


#include <stdio.h>

struct ADTComplex
{
    float c1; //复数实部
    float c2; //复数虚部
};

struct ADTComplex creat(struct ADTComplex A) //创建一个复数
{
    float a, b;
    scanf("%f %f", &a, &b);

    A.c1 = a;
    A.c2 = b;
    return A;
}

void output(struct ADTComplex sum) //输出一个复数
{
    if (sum.c2 < 0)
        printf("%.2f%.2fi\n", sum.c1, sum.c2);
    else
        printf("%.2f+%.2fi\n", sum.c1, sum.c2);
}

struct ADTComplex add(struct ADTComplex A, struct ADTComplex B) //求两个复数相加
{
    struct ADTComplex sum;
    sum.c1 = A.c1 + B.c1;
    sum.c2 = A.c2 + B.c2;
    return sum;
}

struct ADTComplex multi(struct ADTComplex A, struct ADTComplex B) //求两个复数相乘
{
    struct ADTComplex chengji;
    chengji.c1 = A.c1 * B.c1 - A.c2 * B.c2;
    chengji.c2 = A.c1 * B.c2 + A.c2 * B.c1;
    return chengji;
}

int main()
{
    struct ADTComplex A, B, sum, chengji;

    //~~~~~~~~~~~~~~~没将A和B更新~~~~~~~~~~~~~~~~~
    A = creat(A);
    B = creat(B);

    sum = add(A, B);
    chengji = multi(A, B);

    output(sum);
    output(chengji);

    return 0;
}

这个代码建议重新编辑在代码框中

太乱了。。