首页 > 试题广场 >

复数有两个部分组成:实数部分和虚数部分。复数的一种书写方式是

[问答题]
复数有两个部分组成:实数部分和虚数部分。复数的一种书写方式是:(3.0, 4.0),其中,3.0是实数部分,4.0是虚数部分。假设a=(A,Bi),c=(C,Di),则下面是一些复数运算。
  • 加法:a+c=(A+C,(B+D)i)。
  • 减法:a-c=(A-C,(B-D)i)。
  • 乘法:a*c=(A*C-B*D,(A*D+B*C)i)。
  • 乘法::x*c=(x*C,x*Di),其中x为实数。
  • 共轭:-a=(A,-Bi)。
请定义一个复数类,以便下面的程序可以使用它来获得正确的结果。

#include <iostream>
using namespace std;
#include "complex0.h"      // to avoid confusior with complex.h
int main()
{
     complex a(3.0, 4.0);     // initialize to (3,4i)
     complex c;
     cout << "Enter a complex number (q to quit) :\n:";
     while (cin >> c)
     {
            cout << "c is " << c << '\n';
            cout << "complex conjugate is " << -c << '\n';
            cout << "a is " << a << '\n';
            cout << "a + c is " << a + c << '\n';
            cout << "a - c is " << a - c << '\n';
            cout << "a * c is " << a * c << '\n';
            cout << *2 * c is * << 2 * c << '\n';
            cout << "Enter a complex number (q to quit) :\n";
     }
     cout << "Done!\n";
     return 0;
}

注意,必须重载运算符<<和>>,标准C++使用头文件complex提供了比这个示例更广泛的复数支持,因此应将自定义的头文件命名为complex0.h,以免发生冲突。应尽可能使用const。
下面是该程序的运行情况。
Enter a complex number (q to quit):
real: 10
imaginary: 12
c is (10,12i)
complex conjugate is (10,-12i)
a is (3,4f)
a + c is (13,16i)
a - c is (-7,-8i)
a * c is (-18,76i)
2 * c is (20,24i)
Enter a complex number (q to quit):
real: q
Done!

请注意,经过重载后,cin>>c将提示用户输入实数和虚数部分。

这道题你会答吗?花几分钟告诉大家答案吧!