PAT乙级1051-----复数乘法 (15分)

Posted a982961222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1051-----复数乘法 (15分)相关的知识,希望对你有一定的参考价值。

1051 复数乘法 (15分)

复数可以写成 ( 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 1;也可以写成极坐标下的指数形式 (,其中 R 是复数模,P 是辐角,i 是虚数单位,其等价于三角形式 (。

现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。

输入格式:

输入在一行中依次给出两个复数的 R?1??, P?1??, R?2??, P?2??,数字间以空格分隔。

输出格式:

在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数。注意:如果 B 是负数,则应该写成 A-|B|i 的形式。

输入样例:

2.3 3.5 5.2 0.4
 

输出样例:

-8.68-8.23i

思路:
1.用double类型,且要注意保留的小数位数(例如:-0.001保留两位会变成-0.00)
2.注意正数或0要带+号
3.若用到取绝对值要用fabs()而并不是abs()

首次通过代码:
技术图片
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 
 5 int main(){
 6    double r1,p1,r2,p2;
 7    double a,b;
 8    scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
 9    double a1,b1,a2,b2;
10    a1=r1*cos(p1);//实部1
11    b1=r1*sin(p1);//虚部1
12    a2=r2*cos(p2);//实部2
13    b2=r2*sin(p2);//虚部2
14    a=a1*a2-b1*b2;
15    b=a1*b2+a2*b1;
16 
17    if(fabs(a)<0.01&&a<0) 
18     printf("0.00");
19     else 
20    printf("%.2f",a);
21     if(b>=0) printf("+%.2fi",b);
22     else {
23         if(fabs(b)<0.01) 
24         printf("+0.00i");
25         else 
26         printf("%.2fi",b);
27     }
28    
29    return 0;
30 }
View Code

 

 

以上是关于PAT乙级1051-----复数乘法 (15分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT-乙级-1051 复数乘法

PAT Basic 1051 复数乘法 (15 分)

B1051 复数乘法(15 分)

PAT 1051. 复数乘法 (15)

1051 复数乘法 (15分)

1051 复数乘法 (15分)