You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用结构体变量实现复数计算器算术运算的相关问题

复数计算程序修正方案

加法函数错误修复

C语言没有提供结构体运算符重载能力,不能直接对两个Complex结构体执行+运算,需要分别对实部、虚部做算术运算后赋值给结果结构体的对应成员,修正后的加法函数如下:

Complex add_complex(Complex z1, Complex z2) {
    Complex z3;
    // 实部相加
    z3.RealPart = z1.RealPart + z2.RealPart;
    // 虚部相加
    z3.ImagPart = z1.ImagPart + z2.ImagPart;
    return z3;
}

输入读取函数逻辑修正

你当前编写的read_complex也存在问题:函数声明返回单个Complex类型,但内部同时读取了两个复数,且未正确返回有效值。建议修改为单次读取1个复数,需要读取两个数时调用两次函数即可:

Complex read_complex(void) {
    Complex c;
    scanf("%lf %lf", &c.RealPart, &c.ImagPart);
    return c;
}

完整调用示例

#include <stdio.h>

typedef struct Complex_ {
    double RealPart;
    double ImagPart;
} Complex;

Complex read_complex(void) {
    Complex c;
    scanf("%lf %lf", &c.RealPart, &c.ImagPart);
    return c;
}

Complex add_complex(Complex z1, Complex z2) {
    Complex z3;
    z3.RealPart = z1.RealPart + z2.RealPart;
    z3.ImagPart = z1.ImagPart + z2.ImagPart;
    return z3;
}

// 补充复数乘法实现参考
Complex mul_complex(Complex z1, Complex z2) {
    Complex z3;
    z3.RealPart = z1.RealPart * z2.RealPart - z1.ImagPart * z2.ImagPart;
    z3.ImagPart = z1.RealPart * z2.ImagPart + z1.ImagPart * z2.RealPart;
    return z3;
}

int main() {
    Complex a, b, add_res, mul_res;
    printf("输入第一个复数(实部 虚部,空格分隔):");
    a = read_complex();
    printf("输入第二个复数(实部 虚部,空格分隔):");
    b = read_complex();
    
    add_res = add_complex(a, b);
    mul_res = mul_complex(a, b);
    
    printf("加法结果:%.2lf + %.2lfi\n", add_res.RealPart, add_res.ImagPart);
    printf("乘法结果:%.2lf + %.2lfi\n", mul_res.RealPart, mul_res.ImagPart);
    return 0;
}

内容的提问来源于stack exchange,提问作者printingwrong3434

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:36:04