1051 复数乘法

这道题是所有题目中最坑的,可能是之前出题不严谨,也可能是我理解错了题意。

注意点:实部和虚部均保留 2 位小数,并不是指四舍五入后,保留两位小数,而是从小数点后面的第三位开始,直接抹去后面所有的数,此谓保留两位小数。例如,0.008保留 2 位小数后就是0.00。

#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;

int main() {
    double r1,p1,r2,p2;
    cin>>r1>>p1>>r2>>p2;
    double a1,b1,a2,b2;
    a1 = r1*cos(p1);
    b1 = r1*sin(p1);
    a2 = r2*cos(p2);
    b2 = r2*sin(p2);
    double A,B;
    A = a1*a2 - b1*b2;
    B = a1*b2 + b1*a2;
    if(fabs(A) < 0.01) A = 0.00;//保留两位小数
    if(fabs(B) < 0.01) B = 0.00;//保留两位小数
    printf("%.2f",A);
    if(B >= 0) printf("+"); //整数要记得输出 加号
    printf("%.2fi",B);
    return 0;
}

 

 

 

实部和虚部均保留 2 位小数

posted @ 2020-02-22 12:14  tangq123  阅读(233)  评论(0)    收藏  举报