题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488
这题有个坑点

分析:当A或者B小于0但是大于-0.005(比如-0.00001)时候,如果按照A>=0的判断,会输出“-0.00”这样的结果,事实上应该输出“0.00”【B同理,应该输出“+0.00i”】

代码

  1. #include<cstdio>
  2. #include<cmath>
  3. using namespace std;
  4. int main(){
  5. double r1, p1, r2, p2;
  6. scanf("%lf%lf%lf%lf",&r1, &p1, &r2, &p2);
  7. double A, B, a1, a2, b1, b2;
  8. a1 = r1 * cos(p1), b1 = r1 * sin(p1);
  9. a2 = r2 * cos(p2), b2 = r2 * sin(p2);
  10. A = a1 * a2 - b1 * b2;
  11. B = a1 * b2 + a2 * b1;
  12. if (A + 0.005 >= 0 && A < 0)
  13. printf("0.00");
  14. else
  15. printf("%.2f", A);
  16. if(B >= 0)
  17. printf("+%.2fi", B);
  18. else if (B + 0.005 >= 0 && B < 0)
  19. printf("+0.00i");
  20. else
  21. printf("%.2fi", B);
  22. return 0;
  23. }