7-36 復數四則運算


7-36 復數四則運算(15 分)

本題要求編寫程序,計算2個復數的和、差、積、商。

輸入格式:

輸入在一行中按照a1 b1 a2 b2的格式給出2個復數C1=a1+b1i和C2=a2+b2i的實部和虛部。題目保證C2不為0。

輸出格式:

分別在4行中按照(a1+b1i) 運算符 (a2+b2i) = 結果的格式順序輸出2個復數的和、差、積、商,數字精確到小數點后1位。如果結果的實部或者虛部為0,則不輸出。如果結果為0,則輸出0.0。

輸入樣例1:

2 3.08 -2.04 5.06

輸出樣例1:

(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i

輸入樣例2:

1 1 -1 -1.01

輸出樣例2:

(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0

思路:這題讓我去學了下高中的數學,做題的時候注意本題有樣例可知進行了四舍五入的做法;所以不能用a==0或者b==0(當然如果你已經做了處理的的話 );還有在前面等號前面看起來固定的輸出,千萬不要去偷懶!
提醒一下abs()是整數的絕對值,fabs()是浮點型的絕對值。最重要的事情要說了,第三個測試點純實數運算,當虛部等於零的時候輸出時前面也要加正號!!
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
double a1, b1, a2, b2;
void ccout(double a,char c, double b)
{
    
    if (b1 >= 0 && (b2 >=0))                    //正常人都不會在這兒卡三小時,注意等號!!!/哭死
        printf("(%.1lf+%.1lfi) %c (%.1lf+%.1lfi) = ", a1, b1, c, a2, b2);
    else if ((b1 >= 0) && (b2 < 0))
        printf("(%.1lf+%.1lfi) %c (%.1lf%.1lfi) = ", a1, b1, c, a2, b2);
    else if ((b1<0) && (b2 >= 0))
        printf("(%.1lf%.1lfi) %c (%.1lf+%.1lfi) = ", a1, b1, c, a2, b2);
    else 
        printf("(%.1lf%.1lfi) %c (%.1lf%.1lfi) = ", a1, b1, c, a2, b2);

    if (fabs(a)<0.1 && fabs(b)<0.1) { printf("0.0\n"); return; }

    int flag = 0;                        //用來標記看是否實部有輸出,好解決虛部的符號問題
    if (fabs(a)>=0.1)
    {
        printf("%.1lf", a);
        flag++;
    }
    if (fabs(b)>=0.1){
        if (flag && b > 0.0)printf("+%.1lfi", b);
        else printf("%.1lfi", b);
    }
    cout << endl;                //無論什么結果都要輸出回車
}
int main()
{
    
    cin >> a1 >> b1 >> a2 >> b2;

    double a, b;
    //加法
    a = a1 + a2;
    b = b1 + b2;
    ccout(a, '+', b);
    //減法
    a = a1 - a2;
    b = b1 - b2;
    ccout(a, '-', b);
    //乘法
    a = a1*a2 - b1*b2;
    b = a1*b2 + a2*b1;
    ccout(a, '*', b);
    //除法
    a = (a1*a2 + b1*b2) / (a2*a2 + b2*b2);
    b = (a2*b1 - a1*b2) / (a2*a2 + b2*b2);
    ccout(a, '/', b);

    return 0;
}

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM