设计一个类Complex,用于封装对复数的下列操作: 成员变量:实部real,虚部image,均为整数变量; 构造方法:无参构造方法、有参构造方法(参数2个) 成员方法:含两个复数的加、减、乘操作。 复数相加举例: (1+2i)+(3+4i)= 4 + 6i 复数相减举例: (1+2i)-(3+4i)= -2 - 2i 复数相乘举例: (1+2i)*(3+4i)= -5 + 10i 要求:对复数进行连环算术运算。提示:如果用PYTHON语言实现,不必设计Complex类,可以使用内置的复数数据类型,完成复数的算术运算。输入有多行。 第一行有两个整数,代表复数X的实部和虚部。 后续各行的第一个和第二个数表示复数Y的实部和虚部,第三个数表示操作符op: 1——复数X和Y相加;2——复数X和Y相减;3——复数X和Y相乘。 当输入0 0 0时,结束运算,输出结果。输出一行。 第一行有两个整数,代表复数的实部和虚部,实部和虚部之间用1个空格分开。
时间: 2023-04-03 17:04:09 浏览: 204
设计一个复数的类
我可以回答这个问题。请看下面的代码实现:
```c
#include <stdio.h>
typedef struct {
int real;
int image;
} Complex;
Complex add(Complex x, Complex y) {
Complex result;
result.real = x.real + y.real;
result.image = x.image + y.image;
return result;
}
Complex sub(Complex x, Complex y) {
Complex result;
result.real = x.real - y.real;
result.image = x.image - y.image;
return result;
}
Complex mul(Complex x, Complex y) {
Complex result;
result.real = x.real * y.real - x.image * y.image;
result.image = x.real * y.image + x.image * y.real;
return result;
}
int main() {
Complex x, y, result;
int op;
scanf("%d%d", &x.real, &x.image);
while (1) {
scanf("%d%d%d", &y.real, &y.image, &op);
if (y.real == 0 && y.image == 0 && op == 0) {
break;
}
switch (op) {
case 1:
result = add(x, y);
break;
case 2:
result = sub(x, y);
break;
case 3:
result = mul(x, y);
break;
}
x = result;
}
printf("%d %d", x.real, x.image);
return 0;
}
```
输入格式为:
```
X的实部 X的虚部
Y的实部 Y的虚部 操作符
Y的实部 Y的虚部 操作符
...
0 0 0
```
其中操作符为1、2、3,分别表示加、减、乘。
输出格式为:
```
结果的实部 结果的虚部
```
例如,输入:
```
1 2
3 4 1
0 1 3
-1 -2 2
0 0 0
```
输出:
```
3 7
```
这个程序实现了一个复数类,可以进行加、减、乘操作,并且支持连环算术运算。
阅读全文