复数的加减乘除C语言实现

思路:
1复数的表示:用结构体实现
2复数的加减法:实部虚部分别相加减
复数的乘法:(a+bi)(c+di)=ac-bd+(ad+cb)i
复数的除法:(a+bi)(c+di)=(ac+bd)(c
c+dd)+(bc-ad)(cc+d*d)
考虑分母为0的情况
3注意输出格式,考虑虚部为复数和虚部为0的情况
4用switch语句由用户自己选择要进行的操作
5用do…while循环实现多次运算

代码实现

#include<stdio.h>
#include<math.h>
//用结构体表示复数
typedef struct
{
    double realPart;
    double imagPart;
    /* data */
}complex;

//定义一个复数
complex assign(double a, double b);

//复数的加法
complex add(complex c1, complex c2);

//复数的减法
complex sub(complex c1, complex c2);

//复数的乘法
complex mul(complex c1, complex c2);

//复数的除法
complex div(complex c1, complex c2);

void display(complex c);

int main()
{
    double realPart, imagPart;
    complex c1, c2;
    int adjust = 0;

    do
    {
        printf("--------------------------------\n");
        printf("欢迎您使用负数计算器\n");

        printf("请您输入复数的实部和虚部\n");
        scanf("%lf%lf", &realPart, &imagPart);
        c1 = assign(realPart, imagPart);
        display(c1);

        printf("请您输入第二个复数的实部和虚部\n");
        scanf("%lf%lf", &realPart, &imagPart);
        c2 = assign(realPart, imagPart);
        display(c2);


        printf("请您选择需要进行的操作\n");
        printf("1加法\n2减法\n3乘法\n4除法\n0退出复数计算器\n");
        scanf("%d", &adjust);

        if (adjust == 1 || adjust == 2 || adjust == 3 || adjust == 4)
        {
            printf("您的计算结果是:");
        }

        switch (adjust)
        {
        case 1:
            display(add(c1, c2));
            break;
        case 2:
            display(sub(c1, c2));
            break;
        case 3:
            display(mul(c1, c2));
            break;
        case 4:
            display(div(c1, c2));
            break;
        default:
            if (adjust == 0)
            {
                printf("谢谢使用");
            }
            else
            {
                printf("输入的操作有误,请您重新输入");
            }
        }
    } while (adjust != 0);

    printf("感谢您的使用,祝您生活愉快");
    return 0;
}

//定义一个复数
complex assign(double a, double b)
{
    complex c;
    c.realPart = a;
    c.imagPart = b;
    return c;
}

//复数的加法
complex add(complex c1, complex c2)
{
    return assign((c1.realPart + c2.realPart), (c1.imagPart + c2.imagPart));
}

//复数的减法
complex sub(complex c1, complex c2)
{
    return assign((c1.realPart - c2.realPart), (c1.imagPart - c2.imagPart));
}

//复数的乘法
complex mul(complex c1, complex c2)
{
    return assign((c1.realPart * c2.realPart - c1.imagPart * c2.imagPart), (c1.imagPart * c2.realPart + c1.realPart * c2.imagPart));
}

//复数的除法
complex div(complex c1, complex c2)
{
    double temp = (pow(c2.realPart, 2) + pow(c2.imagPart, 2));
    if (temp!=0)
    {
        return assign((c1.realPart * c2.realPart + c1.imagPart * c2.imagPart) / temp, (c1.imagPart * c2.realPart - c1.realPart * c2.imagPart) / temp);
    }
    else
    {
        printf("除数为0,请重新输入");
        return assign(0, 0);
    }
}

//输出复数
void display(complex c)
{
    if (c.imagPart > 0) {
        printf("%lf+%lfi\n", c.realPart, c.imagPart);
    }
    else if (c.imagPart < 0)
    {
        printf("%lf%lfi\n", c.realPart, c.imagPart);
    }
    else
    {
        printf("%lf\n", c.realPart);
    }
}

运行结果显示,结果验算都是正确的:
加乘除
在这里插入图片描述
减法
在这里插入图片描述

  • 22
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
复数乘除运算可以通过C语言中的结构体来实现。首先,我们可以定义一个结构体来表示复数,其中包括实部和虚部。然后,我们可以使用结构体的成员运算符"."来访问实部和虚部,并进行相应的运算。 对于复数法和法,我们可以将实部和虚部分别相或相。例如,对于两个复数(a+bi)和(c+di),它们的法结果为((a+c)+(b+d)i),法结果为((a-c)+(b-d)i)。\[1\]\[2\] 对于复数的乘法,我们可以使用公式((a+bi)(c+di)=(ac-bd)+(ad+bc)i)来计算。即将两个复数的实部和虚部分别相乘,并将结果相得到新的实部,将实部和虚部相乘并相得到新的虚部。\[1\]\[2\] 对于复数的除法,我们可以使用公式((a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+((bc-ad)/(c^2+d^2))i)来计算。即将两个复数的实部和虚部分别相乘,并将结果相得到新的实部,将实部和虚部相乘并相得到新的虚部,然后将结果除以分母的平方和。需要注意的是,除法运算时要考虑分母为0的情况。\[1\]\[2\] 在C语言中,我们可以使用switch语句让用户选择要进行的操作,然后使用do...while循环实现多次运算。在输出结果时,需要考虑虚部为复数和虚部为0的情况,以及输出格式的处理。\[1\] 总结起来,C语言复数乘除运算可以通过结构体实现,使用相应的公式进行计算,并注意处理特殊情况和输出格式。 #### 引用[.reference_title] - *1* [复数乘除C语言实现](https://blog.csdn.net/zf111212/article/details/120925457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C语言实现复数乘除](https://blog.csdn.net/AKE_XBZ/article/details/123800578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下坠丷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值