PAT B1051 复数乘法 (15 分)

在这里插入图片描述
这题对于复数有遗忘的同学也不要害怕,读一遍题目自己演算一遍就能理解了。
这题的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;
} 

猜你喜欢

转载自blog.csdn.net/weixin_45964844/article/details/113657271