题目链接
#include <bits/stdc++.h>
using namespace std;
int main()
{
double r1, p1, r2, p2;
scanf("%lf%lf%lf%lf", &r1, &p1, &r2, &p2);
double real = r1 * r2 * (cos(p1) * cos(p2) - sin(p1) * sin(p2));
double imagine = r1 * r2 * (cos(p1) * sin(p2) + sin(p1) * cos(p2));
if (real >= -0.005 && real <= 0) real = 0;
printf("%.2f", real);
if (imagine >= -0.005 && imagine <= 0) imagine = 0, printf("+0.00i");
else if (imagine > 0) printf("+%.2fi", imagine);
else printf("%.2fi", imagine);
return 0;
}
本题需要注意的是,当real 和imagine 在-0.005~0这个区间范围内的时候时,四舍五入程序会输出-0.00,而0.00显然>=0,应该输出+0.00,所以需要对real和imagine单独特判。(real为0时前面无需添加+号,但imagine为0时应为+0.00i)
此外,因为real和imagine输出标准的不同,可以考虑分别用if else语句判断输出。