試題 演算法訓練 P1103
阿新 • • 發佈:2020-08-23
資源限制
時間限制:1.0s 記憶體限制:256.0MB
問題描述
程式設計實現兩個複數的運算。設有兩個複數 和 ,則他們的運算公式為:
要求:(1)定義一個結構體型別來描述複數。
(2)複數之間的加法、減法、乘法和除法分別用不用的函式來實現。
(3)必須使用結構體指標的方法把函式的計算結果返回。
說明:使用者輸入:運算子號(+,-,*,/) a b c d.
輸出:a+bi,輸出時不管a,b是小於0或等於0都按該格式輸出,輸出時a,b都保留兩位。
樣例輸入:
- 2.5 3.6 1.5 4.9
樣例輸出:
1.00+-1.30i 這題只要知道複數的運演算法則就好了,當然,我沒有按題目要求來做.
程式設計實現兩個複數的運算。設有兩個複數 和 ,則他們的運算公式為:
要求:(1)定義一個結構體型別來描述複數。
(2)複數之間的加法、減法、乘法和除法分別用不用的函式來實現。
(3)必須使用結構體指標的方法把函式的計算結果返回。
說明:使用者輸入:運算子號(+,-,*,/) a b c d.
輸出:a+bi,輸出時不管a,b是小於0或等於0都按該格式輸出,輸出時a,b都保留兩位。
樣例輸入:
- 2.5 3.6 1.5 4.9
樣例輸出:
1.00+-1.30i 這題只要知道複數的運演算法則就好了,當然,我沒有按題目要求來做.
複數運演算法則:1. 加法:(a+bi) + (c+di) = (a+c) + (b+d)i;
2. 減法:(a+bi) - (c+di) = (a-c) + (b-d)i;
3. 乘法:(a+bi) * (c+di) = (ac-bd) + (bc+ad)i; 4. 除法:(這裡用到分母例項化)
1 #include <iostream>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cstring>
5 #include <string>
6 #include <cmath>
7 #include <algorithm>
8 #define INF 0x3f3f3f3f
9 #define zero 1e-7
10
11 using namespace std;
12 typedef long long ll;
13 const ll mod=50000;
14 const ll max_n=2e5+7;
15
16 int main() {
17 double a, b, c, d, x, y;
18 char ch;
19 cin>>ch>>a>>b>>c>>d;
20 switch (ch) {
21 case '+': x=a+c; y=b+d; break;
22 case '-': x=a-c; y=b-d; break;
23 case '*': x=a*c-b*d; y=b*c+a*d; break;
24 case '/': x=(a*c+b*d)/(c*c+d*d); y=(b*c-a*d)/(c*c+d*d); break;
25 default : break;
26 }
27 printf("%.2f+%.2fi\n", x, y);
28 return 0;
29 }