C语言抽象数据类型实现复数的加减乘运算、输入实部虚部输出复数,输入复数输出实部虚部
时间: 2024-09-23 13:10:27 浏览: 58
数据结构复数计算器
在C语言中,我们可以使用结构体和指向该结构体的指针来实现抽象数据类型(Abstract Data Type, ADT),用来表示复数并支持基本的加减乘运算。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义复数结构体
typedef struct {
double real; // 实部
double imag; // 虚部
} Complex;
// 初始化复数函数
Complex* create_complex(double real, double imag) {
Complex* c = (Complex*)malloc(sizeof(Complex));
c->real = real;
c->imag = imag;
return c;
}
// 加法运算
Complex* add_complex(Complex* a, Complex* b) {
Complex* result = create_complex(a->real + b->real, a->imag + b->imag);
return result;
}
// 减法运算
Complex* subtract_complex(Complex* a, Complex* b) {
Complex* result = create_complex(a->real - b->real, a->imag - b->imag);
return result;
}
// 乘法运算
Complex* multiply_complex(Complex* a, Complex* b) {
double real = a->real * b->real - a->imag * b->imag;
double imag = a->real * b->imag + a->imag * b->real;
Complex* result = create_complex(real, imag);
return result;
}
// 输出复数的实部和虚部
void print_complex(Complex* c) {
printf("Real part: %lf, Imaginary part: %lf\n", c->real, c->imag);
}
// 输入复数并创建结构体实例
void input_complex(Complex** c) {
double real, imag;
printf("Enter the real and imaginary parts of a complex number: ");
scanf("%lf %lf", &real, &imag);
*c = create_complex(real, imag);
}
int main() {
Complex* num1, *num2;
input_complex(&num1); // 输入第一个复数
input_complex(&num2); // 输入第二个复数
Complex* sum = add_complex(num1, num2);
print_complex(sum); // 输出两个复数的和
free(sum);
Complex* diff = subtract_complex(num1, num2);
print_complex(diff); // 输出两个复数的差
free(diff);
Complex* prod = multiply_complex(num1, num2);
print_complex(prod); // 输出两个复数的积
free(prod);
return 0;
}
```
在这个示例中,我们首先定义了一个`Complex`结构体来存储复数的实部和虚部,然后实现了加、减、乘的操作以及输入输出功能。
阅读全文