2039 複數四則運算

2022-05-22 03:24:11 字數 1370 閱讀 4864

time limit: 1 second

memory limit: 50 mb

輸入兩個複數和乙個運算子,計算後將結果以複數形式輸出,計算結果均保留兩位小數。(注意:求除法時,除數的實部與虛部若同時為0,則輸出'error!')。

說明:複數的一般形式為,乙個複數x=a+bi,其中a、b就是它的實部和虛部,字母i不可少。a、b同為實數,若b=0,則x為乙個普通的實數。當a=0或b=0時就省略掉實部或虛部,包括中間的加號,同時約定i*i=-1。

設有兩個複數x=a+bi,y=c+di,則他們的四則運算規則如下:

1)加法:z=x+y=(a+c)+(b+d)i;

2)減法:z=x+y=(a-c)+(b-d)i;

3)乘法:按照多項式運算法則進行:z=x*y=(a*c-b*d)+(a*d+b*c)i;

4)除法:先將分母實數化,再合併同類項形成新的附屬的實部和虛部:z=x/y=(a*c+b*d)/(c*c+d*d)+(b*c-a*d)i/(c*c+d*d);

注意:本題中的資料預設在實數範圍有效,不考慮溢位問題。

共2行;

第一行依次輸入兩個複數的實部和虛部,共4個實數,中間間隔乙個空格。

第二行輸入乙個運算符號(+、-、*、/ 之一)。

包含1行,結果為複數形式:a+bi。

2 3 6 11

+

8.00+14.00i
0 54 5 0

/

10.80i
【題解】

只要按照題目的要求運算就可以了。公式也都給出來了——>有學複數的可以自己寫。除法就是把分母常數化。。高中我經常叫成分子常數化。。

比較坑的是,裡面有乙個點輸出為0,而0沒有保留兩位數字。。。我一開始還以為是因為符號多打了幾個字元,所以才沒過。後來改成判斷字元的

【**】

#include #include #include #include using namespace std;

double a,b,c,d,e,f;

string s1;

void input_data()

void get_ans() //根據符號 做相應的運算

if (s1[0] == '-')

if (s1[0] == '*')

if (s1[0] == '/')

e = (a * c + b * d)/(c * c + d * d);

f = (b*c-a*d)/(c*c+d*d);

}}void output_ans()

if (e == 0 && f != 0)

printf("%.2lf+%.2lfi",e,f);

}int main()

複數四則運算

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

6 17複數四則運算

設計複數庫,實現基本的複數加減乘除運算。輸入時只需分別鍵入實部和虛部,以空格分割,兩個複數之間用運算子分隔 輸出時按a bi的格式在螢幕上列印結果。參加樣例輸入和樣例輸出。注意考慮特殊情況,無法計算時輸出字串 error 樣例輸入 2 4 3 2 樣例輸出 14 8i 樣例輸入 3 2 1 3 樣例...

複數四則運算 PAT

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