c语言复数adt的设计取实部与虚部
时间: 2024-09-19 08:07:33 浏览: 54
在C语言中设计一个复数数据类型(Complex Number ADT,Abstract Data Type),通常会采用结构体的方式,包含实部(real part)和虚部(imaginary part)。下面是一个简单的复数ADT设计示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义复数结构体
typedef struct {
double real; // 实部
double imag; // 虚部
} Complex;
// 初始化复数
Complex* create_complex(double real, double imag) {
Complex* complex = (Complex*)malloc(sizeof(Complex));
if (complex != NULL) {
complex->real = real;
complex->imag = imag;
}
return complex;
}
// 显示复数
void print_complex(Complex* c) {
printf("(%lf + %lfi)", c->real, c->imag);
}
// 操作复数(这里只展示加法,其他操作类似)
Complex* add_complex(Complex* c1, Complex* c2) {
Complex* result = create_complex(c1->real + c2->real, c1->imag + c2->imag);
return result;
}
// 释放内存
void destroy_complex(Complex* c) {
free(c);
}
int main() {
Complex* c1 = create_complex(3.0, 4.0);
Complex* c2 = create_complex(-1.5, 2.5);
print_complex(c1); // 输出: (3.000000 + 4.000000i)
print_complex(add_complex(c1, c2)); // 输出: (1.500000 + 6.500000i)
destroy_complex(c1);
destroy_complex(c2);
return 0;
}
```
在这个例子中,我们定义了一个`Complex`结构体,包含了两个`double`类型的成员变量分别代表实部和虚部。还有相应的创建、显示和操作函数(如加法)以及内存管理函数(如释放)。使用这个ADT,你可以方便地处理复数计算。
阅读全文