试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义,使用c语言实现改
时间: 2024-10-08 07:03:41 浏览: 47
复数和有理数都是数学中的重要概念,可以抽象成自定义的数据类型来在程序设计中处理。下面我将分别给出它们的抽象数据类型定义以及简单的C语言实现。
### 抽象数据类型 - 复数(Complex Number)
```c
typedef struct Complex {
double real; // 实部
double imag; // 虚部
} Complex;
// 复数的基本操作,如加法、减法等
void addComplex(Complex* c1, Complex* c2, Complex* result) {
result->real = c1->real + c2->real;
result->imag = c1->imag + c2->imag;
}
// 类似地,可以添加其他操作如乘法、除法等
```
### 抽象数据类型 - 有理数(Rational Number)
```c
typedef struct Rational {
int numerator; // 分子
int denominator; // 分母
int gcd; // 最大公约数,用于简化分数
} Rational;
// 初始化一个有理数
Rational createRational(int num, int den) {
Rational r;
r.numerator = num;
r.denominator = den;
r.gcd = __gcd(num, den); // 使用内置的GCD函数计算最大公约数
r.denominator /= r.gcd;
return r;
}
// 操作如加法、减法等
void addRational(Rational* r1, Rational* r2, Rational* result) {
int newNumerator = (r1->numerator * r2->denominator) + (r2->numerator * r1->denominator);
int newDenominator = r1->denominator * r2->denominator;
result->numerator = newNumerator;
result->denominator = newDenominator;
}
```
阅读全文