跳到主要内容

C++ 编程:通过向函数传递结构来添加复数

为了理解这个示例,你应该掌握以下 C++ 编程 主题的知识:

示例:源代码以添加两个复数

// 复数由用户输入

#include <iostream>
using namespace std;

typedef struct complex {
float real;
float imag;
} complexNumber;

complexNumber addComplexNumbers(complex, complex);

int main() {
complexNumber num1, num2, complexSum;
char signOfImag;

cout << "对于第一个复数," << endl;
cout << "分别输入实部和虚部:" << endl;
cin >> num1.real >> num1.imag;

cout << endl
<< "对于第二个复数," << endl;
cout << "分别输入实部和虚部:" << endl;
cin >> num2.real >> num2.imag;

// 调用 add 函数并将结果存储在 complexSum 中
complexSum = addComplexNumbers(num1, num2);

// 使用三元运算符检查虚部的符号
signOfImag = (complexSum.imag > 0) ? '+' : '-';

// 使用三元运算符调整虚部的符号
complexSum.imag = (complexSum.imag > 0) ? complexSum.imag : -complexSum.imag;

cout << "总和 = " << complexSum.real << signOfImag << complexSum.imag << "i";

return 0;
}

complexNumber addComplexNumbers(complex num1, complex num2) {
complex temp;
temp.real = num1.real + num2.real;
temp.imag = num1.imag + num2.imag;
return (temp);
}

输出

对于第一个复数,
分别输入实部和虚部:
3.4
5.5

对于第二个复数,
分别输入实部和虚部:
-4.5
-9.5
总和 = -1.1-4i

在这个程序中,用户输入的两个复数分别存储在结构体 num1num2 中。

这两个结构体被传递到 addComplexNumbers() 函数,该函数计算总和并将结果返回给 main() 函数。

这个结果存储在结构体 complexSum 中。

然后,确定总和的虚部符号,并将其存储在 char 变量 signOfImag 中。

// 使用三元运算符检查虚部的符号
signOfImag = (complexSum.imag > 0) ? '+' : '-';

如果 complexSum 的虚部是正的,那么 signOfImag 被赋值为 '+'。否则,它被赋值为 '-'

然后我们调整 complexSum.imag 的值。

// 使用三元运算符调整虚部的符号
complexSum.imag = (complexSum.imag > 0) ? complexSum.imag : -complexSum.imag;

如果 complexSum.imag 的值是负的,这段代码将其改为正值。

这是因为如果它是负数,在输出时连同 signOfImag 一起打印会出现两个负号。

因此,我们将值改为正值,以避免符号重复。

之后,我们最终显示出总和。