AC代码1
#include <stdio.h>
#include <math.h>
int main(){
double r1,p1,r2,p2;
double a,b;
scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
a=r1*r2*cos(p1+p2);
b=r1*r2*sin(p1+p2);
if(a<0&&a > -0.005) a = 0;
if(b<0&&b > -0.005) b = 0;
printf("%.2lf%+.2lfi",a,b);
return 0;
}
AC代码2
#include <stdio.h>
#include <math.h>
int main(){
double r1,p1,r2,p2;
double a,b;
scanf("%lf %lf %lf %lf",&r1,&p1,&r2,&p2);
a=r1*r2*cos(p1+p2);
b=r1*r2*sin(p1+p2);
if (fabs(a) < 0.01) a = 0;//fabs函数是一个求绝对值的函数
if (fabs(b) < 0.01) b = 0;
printf("%.2lf%+.2lfi",a,b);
return 0;
}
解释:
这道题思路很简单了,就直接展开计算就好啦,但是要注意的点是输出的时候是保留两位小数的,也就是说,如果 -0.001的话,最终输出的是-0.00,但这很显然就是0了,正确的是应该输出0.00,因此我们使用了两个if语句来避免这种情况。
当然也可以根据b的正负来分别输出,也没必要用printf(“%.2lf%+.2lfi“,a,b);