数据结构输出两个复数的四则运算

#include<stdio.h>
#include<math.h>
struct num{
double a;
double b;
};
int main(){
struct num c[10];
scanf("%lf%lf%lf%lf",&c[1].a,&c[1].b,&c[2].a,&c[2].b);
c[3].a=c[1].a+c[2].a;
c[3].b=c[1].b+c[2].b;
c[4].a=c[1].a-c[2].a;
c[4].b=c[1].b-c[2].b;
c[5].a=c[1].ac[2].a-c[1].bc[2].b;
c[5].b=c[1].ac[2].b+c[1].bc[2].a;
c[6].a=((c[1].a)(c[2].a)+(c[1].b)(c[2].b))/((c[2].a)(c[2].a)+c[2].bc[2].b);
c[6].b=(c[1].bc[2].a-c[1].ac[2].b)/(c[2].ac[2].a+c[2].bc[2].b);
//输出时候还要考虑到保留一位小数后为0则也算0,
//假如虚部为负,中间的+号不能加
//换行要输完换
//abs是整数绝对值,fabs才是浮点数绝对值!
//注意,输出的算式中的±都要判断过后面那个数的正负的,这也正是这道题目代码复杂并且重复率高的原因
//不知道有没有好的方法解决这个问题。
//注意,当输出的东西多了以后,相似度哪怕有0.95+也可能有很大的地方出错,毕竟基数大了
if(c[1].b>0&&c[2].b>0)
printf("(%.1f+%.1fi) + (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b<0&&c[2].b>0)
printf(”(%.1f%.1fi) + (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b>0&&c[2].b<0)
printf(”(%.1f+%.1fi) + (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b<0&&c[2].b<0)
printf(”(%.1f%.1fi) + (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
if(fabs(c[3].a)<0.05&&fabs(c[3].b)<0.05) //注意可以用这种方式来判断四舍五入后是否为0.
printf(“0.0”);
if(fabs(c[3].a)>=0.05)
printf(”%.1f",c[3].a);
if(fabs(c[3].a)>=0.05&&c[3].b>0&&fabs(c[3].b)>=0.05)
printf("+");
if(fabs(c[3].b)>=0.05)
printf("%.1fi",c[3].b);
printf("\n");
if(c[1].b>0&&c[2].b>0)
printf("(%.1f+%.1fi) - (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b<0&&c[2].b>0)
printf(”(%.1f%.1fi) - (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b>0&&c[2].b<0)
printf(”(%.1f+%.1fi) - (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else
printf(”(%.1f%.1fi) - (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
if(fabs(c[4].a)<0.05&&fabs(c[4].b)<0.05)
printf(“0.0”);
if(fabs(c[4].a)>=0.05)
printf(”%.1f",c[4].a);
if(fabs(c[4].a)>=0.05&&c[4].b>0&&fabs(c[4].b)>=0.05)//一开始忘了这里,因为要保证后者不约等于0且为正数
printf("+") ;
if(fabs(c[4].b)>=0.05)
printf("%.1fi",c[4].b);
printf("\n");
if(c[1].b>0&&c[2].b>0)
printf("(%.1f+%.1fi) * (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b<0&&c[2].b>0)
printf(”(%.1f%.1fi) * (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b>0&&c[2].b<0)
printf(”(%.1f+%.1fi) * (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else
printf(”(%.1f%.1fi) * (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
if(fabs(c[5].a)<0.05&&fabs(c[5].b)<0.05)
printf(“0.0”);
if(fabs(c[5].a)>=0.05)
printf(”%.1f",c[5].a);
if(fabs(c[5].a)>=0.05&&c[5].b>0&&fabs(c[5].b)>=0.05)
printf("+") ;
if(fabs(c[5].b)>=0.05)
printf("%.1fi",c[5].b);
printf("\n");
if(c[1].b>0&&c[2].b>0)
printf("(%.1f+%.1fi) / (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b<0&&c[2].b>0)
printf(”(%.1f%.1fi) / (%.1f+%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else if(c[1].b>0&&c[2].b<0)
printf(”(%.1f+%.1fi) / (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
else
printf(”(%.1f%.1fi) / (%.1f%.1fi) = “,c[1].a,c[1].b,c[2].a,c[2].b);
if(fabs(c[6].a)<0.05&&fabs(c[6].b)<0.05)
printf(“0.0”);
if(fabs(c[6].a)>=0.05)
printf(”%.1f",c[6].a);
if(fabs(c[6].a)>=0.05&&c[6].b>0&&fabs(c[6].b)>=0.05)
printf("+") ;
if(fabs(c[6].b)>=0.05)
printf("%.1fi",c[6].b);
printf("\n");
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值