标签:stream sub 构造 int ++ nbsp real 文件io 输出
复数ADT(抽象数据类型, Abstruct Data Type)
ADT Complex{
数据对象 :{ e1, e2 | e1, e2(-R, R是实数集 }
数据关系 : { <e1, e2>| e1是复数的实部, e2是复数的虚部 }
基本操作 :
create(&C, x, y)
操作结果:构造复数C. 其实部和虚部分别被赋予以参数x和y的值。
getReal(C)
初始条件:复数C已存在。
操作结果:返回复数C的实部值。
getImag(C)
初始条件:复数C已存在。
操作结果:返回复数C的虚部值。
add(C1, C2)
初始条件:C1, C2是复数。
操作结果:返回两个复数C1, C2的和。
sub(C1, C2)
初始条件:C1, C2是复数。
操作结果:返回两个复数C1, C2的差
}
ADT Complex
C语言实现和简单测试,指针传参版
/** * 数据对象和数据关系的实现 */ struct Complex{ double real; double imag;//imaginary:想象的,虚构的 }; /** * 基本操作的实现 */ Complex* create( Complex* C, double x, double y){ C->real = x; C->imag = y; } double getReal(const Complex* C){ return C->real; } double getImga(const Complex* C){ return C->imag; } Complex* add(const Complex* C1, const Complex* C2){ Complex* C = new Complex; C->real = C1->real + C2->real; C->imag = C1->imag + C2->imag; return C; } Complex* sub(const Complex* C1, const Complex* C2){ Complex* C = new Complex; C->real = C1->real - C2->real; C->imag = C1->imag - C2->imag; return C; } int main(){ Complex *C1 = new Complex; create(C1,12,1); Complex *C2 = new Complex; create(C2,3,5); Complex *C = add(C1,C2); cout<<getReal(C)<<endl; cout<<getImga(C)<<endl; return 0; }
c语言实现和简单测试,不使用指针传参
/** * 数据对象和数据关系的实现 */ struct Complex{ double real; double imag;//imaginary:想象的,虚构的 }; /** * 基本操作的实现 */ Complex create(double x, double y){ Complex c; c.real = x; c.imag = y; return c; } double getReal(const Complex c){ return c.real; } double getImag(const Complex c){ return c.imag; } Complex add(Complex c1, Complex c2){ Complex c; c.real = c1.real + c2.real; c.imag = c1.imag + c2.imag; return c; } int main() { Complex c1 = create(123,1); Complex c2 = create(131,2333); Complex c = add(c1, c2); cout<<c.real<<" "<<c.imag<<endl; Complex c3{12,12}; cout<<c3.real<<" "<<c3.imag<<endl; return 0; }
测试为了方便,使用了C++的输出方式
运行时需要额外增加包含头文件iostream的代码和使用std名称空间的代码
#include<stdio.h> #include<iostream> using namespace std;
标签:stream sub 构造 int ++ nbsp real 文件io 输出
原文地址:https://www.cnblogs.com/RGBTH/p/13277523.html