这题对于复数有遗忘的同学也不要害怕,读一遍题目自己演算一遍就能理解了。
这题的2、3测试点是两个坑,要注意题目中说的是保留两位小数,因此要特别判断一下A和B的绝对值小于0.005的情况,否则符号的输出会出现错误。
#include <cstdio>
#include <cmath>
struct FuShu{
double A;
double B;
};
int main(){
FuShu n, m, sum;
double r1, p1, r2, p2;
scanf("%lf %lf %lf %lf", &r1, &p1, &r2, &p2);
n.A = r1*cos(p1); n.B = r1*sin(p1);
m.A = r2*cos(p2); m.B = r2*sin(p2);
sum.A = n.A*m.A - n.B*m.B;
sum.B = n.A*m.B + n.B*m.A;
if(fabs(sum.A) < 0.005){
printf("0.00");
}else{
printf("%.2f", sum.A);
}
if(fabs(sum.B) < 0.005){
printf("+0.00i");
}else if(sum.B > 0){
printf("+%.2fi", sum.B);
}else{
printf("%.2fi", sum.B);
}
return 0;
}