y1447810283 2020-06-17 21:15 采纳率: 0%
浏览 204

我已经写出代码,请问是哪里错了,请指教,感谢。

设有两个复数a+i*b和c+i*d,要求: 定义一个结构体类型来描述复数; 复数之间的加法、减法、乘法和除法分别用不用的函数来实现; 必须使用结构体指针的方法把函数的计算结果返回。 输入格式: 输入只有一行,其格式为:运算符号(+,-,*)a, b ,c, d。 输出格式: 输出:a+bi,输出时不管a ,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。 注: 使用scanf和printf输入输出,要输出保留两位小数点,使用%.2lf。 测试举例: 测试输入:* 2.5 3.6 1.5 4.9。 预期输出:-13.89+17.65i。
#include
typedef struct{

double real;

double i;

}complex;
complex* add(complex a, complex c,complex b,complex d){

complex* ret = (complex*)malloc(sizeof(complex));
ret->real = a.real + c.real;

ret->i = b.i + d.i;
return ret;
}
complex* minus(complex a, complex c,complex b,complex d){

complex* ret = (complex*)malloc(sizeof(complex));

ret->real = a.real - c.real;

ret->i = b.i - d.i;

return ret;
}
complex* multiply(complex a, complex c,complex b,complex d){

complex* ret = (complex*)malloc(sizeof(complex));

ret->real = a.real*c.real + a.i*d.i;

ret->i = b.i*c.i - b.real*d.real;

return ret;
}
int main(){

char sign;

complex a,c;

complex b,d;

scanf("%c%lf%lf%lf%lf",&sign,&a.real,&b.i,&c.real,&d.i);

if( sign == '+' ){

add(a,b,c,d);

printf("%.2lf+%.2lfi\n",add(a,c,b,d)->real,add(a,b,c,d)->i); }

if( sign == '-' ){

minus(a,b,c,d);
printf("%.2lf+%.2lfi\n",minus(a,b,c,d)->real,minus(a,b,c,d)->i);
}
if( sign == '*' ){

multiply(a,b,c,d);

printf("%.2lf+%.2lfi\n",multiply(a,b,c,d)->real,multiply(a,b,c,d)->i);

}

return 0;
}

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-06-18 00:08
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 (标签-android|关键词-app)
  • ¥15 微信小程序web-view嵌套H5页面IOS左滑会出现相同的页面,有什么解决方法吗?
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)