计算两个复数的和(C语言)

问题遇到的现象和发生背景

定义表示复数的结构体类型,成员为实部和虚部,float。定义函数计算两个复数的和,返回复数。定义函数显示复数格式为:1+1j ,1-1j,如果是0,显示0+0j。
输入:两行,每行表示一个复数的实部和虚部。
输出:一行,两个复数的和。
【输入输出样例】
输入:
-1 -2
-3 -4
输出:
-4-6j

提示:主函数从如下:
int main()
{
COMPLEX a,b,c;
scanf("%f%f",&a.real,&a.imag);
scanf("%f%f",&b.real,&b.imag);
c=add(a,b);
show(c);
return 0;
}

输出格式%g.

问题相关代码,请勿粘贴截图

COMPLEX用了结构体,show怎么弄,最后怎么输出c啊,必须用要求的主函数

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
typedef struct  
{
    float real;
    float imag;
}COMPLEX;

COMPLEX add(COMPLEX a,COMPLEX b)
{
    COMPLEX c;
    c.real = a.real + b.real;
    c.imag = a.imag + b.imag;
    return c;
}
void show(COMPLEX c)
{
    if(c.imag>=0)
        printf("%g+%gi\n",c.real,c.imag);
    else
        printf("%g%gi\n",c.real,c.imag);
}

int main()
{
    COMPLEX a,b,c;
    scanf("%f%f",&a.real,&a.imag);
    scanf("%f%f",&b.real,&b.imag);
    c=add(a,b);
    show(c);
    return 0;
}

你可以参考一下,希望采纳

#include <stdio.h>

struct COMPLEX
{
    float real;
    float imag;

};

struct COMPLEX add(struct COMPLEX a1, struct COMPLEX a2)
{
    struct COMPLEX result;

    result.real = a1.real + a2.real;
    result.imag = a1.imag + a2.imag;

    return result;
}

void show(struct COMPLEX c) {
    if (c.real == 0 && c.imag == 0) {            //实部、虚部都为0
        printf("0+0j\n");
    }
    else if (c.real == 0 && c.imag != 0) {        //实部为0
        if (c.imag > 0) {        //虚部大于0
            printf("0+%gj\n", c.imag);
        }
        else {                    //虚部小于0
            printf("0%gj\n", c.imag);
        }
    }
    else if (c.real != 0 && c.imag == 0) {        //虚部为0
        printf("%g+0j\n", c.real);
    }
    else if (c.real > 0 && c.imag > 0) {        //实部、虚部都大于0
        printf("%g+%gj\n", c.real,c.imag);
    }
    else if (c.real > 0 && c.imag < 0) {        //实部大于0、虚部小于0
        printf("%g%gj\n", c.real, c.imag);
    }
    else if (c.real < 0 && c.imag > 0) {        //实部小于0、虚部大于0
        printf("%g+%gj\n", c.real, c.imag);
    }
    else {                                        //实部、虚部都小于0
        printf("%g%gj\n", c.real, c.imag);
    }
}

int main()
{
    COMPLEX a, b, c;
    scanf_s("%f%f", &a.real, &a.imag);
    scanf_s("%f%f", &b.real, &b.imag);
    c = add(a, b);
    show(c);

    return 0;
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632