C語言試解PTA上基礎題目集7 36 複數四則運算

2021-09-07 04:12:04 字數 1934 閱讀 4351

本題要求編寫程式,計算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。

2 3.08 -2.04 5.06
(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

1 1 -1 -1.01
(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

使用c語言解答如下:

#include #include struct mystruct

;//運用結構體

void print(struct mystruct x, char op, struct mystruct a, struct mystruct b);

//專用列印函式,省去main函式的格式化輸出的繁瑣

int main()

;//初始化結構體陣列

scanf("%lf %lf %lf %lf", &x[0].a, &x[0].b, &x[1].a, &x[1].b);

x[2].a = x[0].a + x[1].a;

x[2].b = x[0].b + x[1].b;//加法部分

print(x[2], '+', x[0], x[1]);

x[3].a = x[0].a - x[1].a;

x[3].b = x[0].b - x[1].b;//減法部分

print(x[3], '-', x[0], x[1]);

x[4].a = x[0].a*x[1].a - x[0].b*x[1].b;

x[4].b = x[0].a*x[1].b + x[1].a*x[0].b;//乘法部分

print(x[4], '*', x[0], x[1]);

x[5].a = x[0].a*x[1].a + x[0].b*x[1].b;

x[5].b = x[0].b*x[1].a - x[0].a*x[1].b;

x[5].a = x[5].a / (x[1].a*x[1].a + x[1].b*x[1].b);

x[5].b = x[5].b / (x[1].a*x[1].a + x[1].b*x[1].b);//除法部分,運用共軛複數

print(x[5], '/', x[0], x[1]);

return 0;

}void print(struct mystruct x, char op, struct mystruct a, struct mystruct b)

pta基礎程式設計題目集7 4

剛看一臉懵逼,後來發現是16位轉十進位制 bcd數是用乙個位元組來表達兩位十進位制的數,每四個位元表示一位。所以如果乙個bcd數的十六進製制是0x12,它表達的就是十進位制的12。但是小明沒學過bcd,把所有的bcd數都當作二進位制數轉換成十進位制輸出了。於是bcd的0x12被輸出成了十進位制的18...

PTA 基礎程式設計題目集 7 15

迴圈判斷當前項是否大於給定閾值,大於就將當前項累加到結果中,否則繼續。如何計算當前項?n為偶數,分母小於n的因子都被約掉了 frac n為奇數,分母小於等於n的因子被約掉了 frac 是否可行呢,我們先看具體的項數 n 4,5,6 情況。n 4 frac n 5 frac n 6 frac 觀察可知...

PTA 基礎程式設計題目集 7 22 龜兔賽跑 C語言

pta 基礎程式設計題目集 7 22 龜兔賽跑 c語言 烏龜與兔子進行賽跑,跑場是乙個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3公尺,兔子每分鐘前進9公尺 兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續...