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
相关产品推荐
相关产品推荐

