《数据结构实验报告抽象数据类型复数的实现.doc》由会员分享,可在线阅读,更多相关《数据结构实验报告抽象数据类型复数的实现.doc(12页珍藏版)》请在三一办公上搜索。
1、实 验 报 告学 院: 信息工程学院 专 业: 计算机 信息工程学院计算机实验中心制数据结构实验报告姓名学号日期2011.3.25 7-8节实验室计算机基础实验室指导教师张有华设备编号实验题目实验1 抽象数据类型复数的实现一 实验内容实验1 抽象数据类型复数的实现二 实验目的1. 了解抽象数据类型(ADT)的基本概念,及描述方法。2. 通过对复数抽象数据类型ADT的实现,熟悉C语言语法及程序设计。为以后章节的学习打下基础。三 需求分析复数抽象数据类型ADT的描述及实现。 复数ADT的描述 ADT complex 数据对象:D= c1,c2 c1,c2FloatSet 数据关系:R= c1, c
2、2 D 基本操作:创建一个复数 InitComplex(); 输出一个复数 OutComplex(); 求两个复数相加之和 AddComplex(); 求两个复数相减之差 SubComplex(); 求两个复数相乘之积 MulComplex(); 求两个复数的商 SComplex(); 等等; ADT complex;本实验实现使用TC2.0实现复数的描述及操作。具体实现要求:1从键盘分别输入2个复数,并可修改已输入的复数。2能输出指定的复数。3两个复数相加之和,观察输出结果。4两个复数相加之差,观察输出结果。5求两个复数相乘之积,观察输出结果。6.求两个复数的商,观察输出结果。7用户可看到如
3、下界面: * * 1.输入复数C1 * * 2.输入复数C2 * * 3.输出复数C1 * * 4.输出复数C2 * * 5.求C1和C2的和 * * 6.求C1和C2的差 * * 7.求C1和C2的积 * * 8.求C1和C2的商 * * 0.结束 * * 四 详细设计步骤1:复数的抽象数据类型的定义。ADT Complex 数据对象:D=a,b|a,bFloatSet 数据关系:R= |a,b D 基本操作:InitComplex(&C,vr,vi);操作结果:构造一个复数,元素a,b分别被赋以参数vr,vi的值。OutComplex(C);操作结果:输出一个复数。AddComplex(&
4、C,C1,C2);操作结果:求两个复数C1,C2之和,结果存入C。SubComplex(&C,C1,C2); 操作结果:求两个复数C1,C2之差,结果存入C。MulComplex(&C,C1,C2); 操作结果:求两个复数C1,C2的积,结果存入C。 ADT Complex步骤2:复数的存储结构及相关操作的声明。复数的存储结构#include #include typedef struct Complexfloat real;float image;Complex;基本操作的声明:Status InitComplex(&C,vr,vi);操作结果:构造一个复数,元素a,b分别被赋以参数vr,v
5、i的值。void OutComplex(C);操作结果:输出一个复数。Complex AddComplex(&C,C1,C2);操作结果:求两个复数C1,C2之和,结果存入C。Complex SubComplex(&C,C1,C2); 操作结果:求两个复数C1,C2之差,结果存入C。Complex MulComplex(&C,C1,C2); 操作结果:求两个复数C1,C2的积,结果存入C。Complex SComplex(&C,C1,C2);操作结果:求两个复数C1,C2的商,结果存入C。步骤3:复数的基本操作的实现。复数的基本操作:/构造一个复数,元素a,b分别被赋以参数vr,vi的值Sta
6、tus InitComplex(Complex &C, float vr, float vi) C.real = vr; C.image =vi; return OK;/输出一个复数void OutComplex(Complex C) printf(C.real“+”C.image“i”);/求两个复数C1,C2之和,结果存入CComplex AddComplex(Complex &C,Complex C1,Complex C2); C.real = C1.real + C2.real; C.image = C1.image + C2.image; return C; /求两个复数C1,C2之
7、差,结果存入CComplex SubComplex(Complex &C,Complex C1,Complex C2) C.real = C1.real - C2.real; C.image = C1.image - C2.image; return C; /求两个复数C1,C2的积,结果存入CComplex MulComplex(Complex &C,Complex C1,Complex C2) C.real = C1.real * C2.real + C1.image * C2.image; C.image = C1.real * C2.image + C1.image * C2.real
8、; return C; /求两个复数C1,C2的商,结果存入CComplex SComplex(Complex &C, Complex C1, Complex C2)C.real = (C1.real * C2.real + C1.image * C2.image)/(C2.real * C2.real + C2.image * C2.image); C.image = (C1.image * C2.real - C1.real * C2.image)/(C2.real * C2.real + C2.image * C2.image);return C;步骤4:上机编程与调试 #include
9、 stdafx.h#include Complex0515.h#include user.hint main(int argc, char* argv)int flag,flag1;float cr,ci,vr,vi;Complex c1,c2,C; CComplex0506 c;printf( * n);printf( * 1.输入复数C1 * n);printf( * 2.输入复数C2 * n);printf( * 3.输出复数C1 * n);printf( * 4.输出复数C2 * n);printf( * 5.求C1和C2的和 * n);printf( * 6.求C1和C2的差 * n
10、);printf( * 7.求C1和C2的积 * n);printf( * 8.求C1和C2的商 * n); printf( * 0.结束 * n); printf( * n);while(1)printf(请输入您的选择(08):);scanf(%d,&flag);switch(flag) case 1: printf(请分别输入复数C1的实部和虚部(空格隔开):); scanf(%f %f,&vr,&vi); break; case 2: printf(请分别输入复数C2的实部和虚部(空格隔开):); scanf(%f %f,&cr,&ci); break; case 3: c.InitC
11、omplex(c1,vr,vi); printf(C1=); c.OutComplex(c1); /复数的初始化 break; case 4: c.InitComplex(c2,cr,ci); printf(C2=); c.OutComplex(c2); break; case 5: c.AddComplex(C,c1,c2); /求两个复数的和 printf(C1+C2=); c.OutComplex(C); break; case 6: c.SubComplex(C,c1,c2); /求两个复数的差 printf(C1-C2=); c.OutComplex(C); break; case
12、7: c.MulComplex(C,c1,c2); /求两个复数的积 printf(C1*C2=); c.OutComplex(C); break; case 8: c.SComplex(C,c1,c2); /求两个复数的商 printf(C1/C2=); c.OutComplex(C); break; case 0: printf(结束n); flag1=1; break; default: printf(输入不合法!n); break;/switchif(flag1=1) break;/whilereturn 0;运行结果:图1.1开始定义变量 CComplex0515 C;Complex C1,C2,CAdd,CSub,CMul;实现各种复数运算的算法打印出来结束步骤五:实验总结1. 通过本次实验,基本掌握抽象数据类型的定义方法及要求;2. 基本掌握C语言程序设计的规范操作流程;3. 编程过程中有些地方考虑不全面,程序不够健壮,;