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個複數的和 差 積 商,數字精確到小數點...