xiaomo102938 2024-11-19 11:17 采纳率: 50%
浏览 2
已结题

pat乙级1051复数乘法

#include<bits/stdc++.h>
using namespace std;
int main( )
{
    double r1,p1,r2,p2,a,b;
    scanf("%lf%lf%lf%lf",&r1,&p1,&r2,&p2);
    a=r2*r1*cos(p1+p2);b=r2*r1*sin(p1+p2);
    if(fabs(a)<0.005) a=0;
    if(fabs(b)<0.005) b=0;
    if(b<0) printf("%.2lf%.2lfi\n",a,b);
    else printf("%.2lf+%.2lfi\n",a,b);
    return 0;
}

为什么一定要写if(fabs(a)<0.005) a=0;和if(fabs(b)<0.005) b=0;啊?
我自己测试的时候没写这两句,运行后结果在临界值附近没有任何问题啊?

  • 写回答

1条回答 默认 最新

  • m0_64491903 2024-11-19 11:28
    关注

    当a=-0.004,b=-0.004时,如果没有那两行,则会输出-0.00-0.00i,显然是不对的,0.00前不能有负号,应输出0.00+0.00i

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月19日
  • 创建了问题 11月19日