PAT 結構 06 複數四則運算 15

2021-06-29 06:23:10 字數 1288 閱讀 8974

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

輸入格式:

輸入在一行中按照「a1 b1 a2 b2」的格式給出2個複數c1=a1+b1*i和c2=a2+b2*i的實部和虛部。題目保證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

題目說輸出的結果若實部或虛部為0則不輸出,全為零則輸出0.0,這暗示如果輸出的不是結果,不管實部虛部是不是0,都得輸出,我未看清題意錯了好幾次
其次就是-0.0的問題了,這反倒不難,下面的clean()函式就是做這個的,因為精確到小數點後1位,故當數》-0.05或<0.05均為0
#include #include #define epsilon 0.05

struct comlexnum

;double clean (double x)

void printcomplex(comlexnum a)

void printexpression(comlexnum a, comlexnum b, comlexnum res, char op)

void add (comlexnum a, comlexnum b)

void sub (comlexnum a, comlexnum b)

void mul (comlexnum a, comlexnum b)

void div (comlexnum a, comlexnum b)

int main()

結構 06 複數四則運算 15

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 喬林 清華大學 本題要求編寫程式,計算2個複數的和 差 積 商。輸入格式 輸入在一行中按照 a1 b1 a2 b2 的格式給出2個複數c1 a1 b1 i和c2 a2 b2 i的實部和虛部...

複數四則運算 PAT

原題如下 本題要求編寫程式,計算2個複數的和 差 積 商。輸入在一行中按照a1 b1 a2 b2的格式給出2個複數c1 a1 b1i和c2 a2 b2i的實部和虛部。題目保證c2不為0。分別在4行中按照 a1 b1i 運算子 a2 b2i 結果的格式順序輸出2個複數的和 差 積 商,數字精確到小數點...

複數四則運算

include include struct complex void initcomplex complex c,float r1,float r2 void addcomplex complex c,complex c1,complex c2 void subcomplex complex c,...