计算2个复数的和、差、积、商(解决)

来源:互联网 发布:java回文数算法 编辑:程序博客网 时间:2024/05/23 12:26

结构
第7题
本题要求编写程序,计算2个复数的和、差、积、商。

【输入】

输入在一行中按照“a1 b1 a2 b2”的格式给出2个复数C1=a1+b1*i和C2=a2+b2*i的实部和虚部。题目保证C2不为0。

【输出】
分别在4行中按照“(a1+b1i) 运算符(a2+b2i) = 结果”的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。

【输入示例1】
2 3.08 -2.04 5.06

【输出示例1】
(2.0+3.1i) + (-2.0+5.1i) = 8.1i

(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i

(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i

(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i

【输入示例2】
1 1 -1 -1.01

【输出示例2】
(1.0+1.0i) + (-1.0-1.0i) = 0.0

(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i

(1.0+1.0i) * (-1.0-1.0i) = -2.0i

(1.0+1.0i) / (-1.0-1.0i) = -1.0




#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].a*c[2].a-c[1].b*c[2].b;     c[5].b=c[1].a*c[2].b+c[1].b*c[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].b*c[2].b);     c[6].b=(c[1].b*c[2].a-c[1].a*c[2].b)/(c[2].a*c[2].a+c[2].b*c[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
原创粉丝点击