复数ADT及其实现实验报告.doc_第1页
复数ADT及其实现实验报告.doc_第2页
复数ADT及其实现实验报告.doc_第3页
复数ADT及其实现实验报告.doc_第4页
复数ADT及其实现实验报告.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

复数ADT及其实现课题名称 数据结构 指导教师 成绩_学生姓名 学号 班级专业 10级电子信息工程 实验日期2012/09/20一、实验目的1. 了解抽象数据类型(ADT)的基本概念,及描述方法。 2. 通过对复数抽象数据类型ADT的实现,熟悉C语言语法及程序设计。为以后章节的学习打下基础。二、实例 复数抽象数据类型ADT的描述及实现。 复数ADT的描述 ADT complex 数据对象:D= c1,c2 c1,c2FloatSet 数据关系:R= c1 c2 基本操作:创建一个复数 creat(a); 输出一个复数 outputc(a); 求两个复数相加之和 add(a,b); 求两个复数相减之差 sub(a,b); 求两个复数相乘之积 chengji(a,b); 等等; ADT complex; 三、源程序代码两个复数相加#include #include typedef struct /* 函数功能 存储表示,结构体类型的定义 */ float x; /* 实部子域 */ float y; /* 虚部的实系数子域 */ comp;comp a,b,a1; /*全局变量的说明 */* 自定义函数遵循先定义,后使用的原则 */void creat(comp *c); /* 函数功能 创建一个复数 */void outputc(comp a); /* 函数功能 输出一个复数 */comp add(comp k,comp h); /* 函数功能 函数功能:求两个复数相加之和 */void main() /* 主函数 */ creat(&a); outputc(a); creat(&b); outputc(b); a1=add(a,b); outputc(a1); void creat(comp *c) float c1,c2; printf(输入实部real x=?);scanf(%f,&c1); printf(输入虚部xvpu y=?);scanf(%f,&c2); (*c).x=c1; c -y=c2; void outputc(comp a) if(a.y0) printf(n %f+%f i nn,a.x,a.y); else printf(n %f%f i nn,a.x,a.y); comp add(comp k,comp h) comp l; l.x=k.x+h.x; l.y=k.y+h.y; return(l); /*结构体类型为返回值*/ 两个复数相减#include #include typedef struct /* 函数功能 存储表示,结构体类型的定义 */ float x; /* 实部子域 */ float y; /* 虚部的实系数子域 */ comp;comp a,b,a1; /*全局变量的说明 */* 自定义函数遵循先定义,后使用的原则 */void creat(comp *c); /* 函数功能 创建一个复数 */void outputc(comp a); /* 函数功能 输出一个复数 */comp sub(comp k,comp h); /* 函数功能 函数功能:求两个复数相减之和 */void main() /* 主函数 */ creat(&a); outputc(a); creat(&b); outputc(b); a1=sub(a,b); outputc(a1); void creat(comp *c) float c1,c2; printf(输入实部real x=?);scanf(%f,&c1); printf(输入虚部xvpu y=?);scanf(%f,&c2); (*c).x=c1; c -y=c2; void outputc(comp a) if(a.y0) printf(n %f+%f i nn,a.x,a.y); else printf(n %f%f i nn,a.x,a.y); comp sub(comp k,comp h) comp l; l.x=k.x-h.x; l.y=k.y-h.y; return(l); 两个复数相乘#include #include typedef struct /* 函数功能 存储表示,结构体类型的定义 */ float x; /* 实部子域 */ float y; /* 虚部的实系数子域 */ comp;comp a,b,a1; /*全局变量的说明 */* 自定义函数遵循先定义,后使用的原则 */void creat(comp *c); /* 函数功能 创建一个复数 */void outputc(comp a); /* 函数功能 输出一个复数 */comp chengji(comp k,comp h); /* 函数功能 函数功能:求两个复数相乘之和 */void main() /* 主函数 */ creat(&a); outputc(a); creat(&b); outputc(b); a1=chengji(a,b); outputc(a1); void creat(comp *c) float c1,c2; printf(输入实部real x=?);scanf(%f,&c1); printf(输入虚部xvpu y=?);scanf(%f,&c2); (*c).x=c1; c -y=c2; void outputc(comp a) if(a.y0) printf(n %f+%f i nn,a.x,a.y); else printf(n %f%f i nn,a.x,a.y); comp chengji(comp k,comp h) comp l; l.x=k.x*h.x-k.y*h.y; l.y=k.y*h.x+k.x*h.y; return(l); 四、程序运行结果及截图首先将上面源程序输入计算机,进行调试。运行程序,输入下列两个复数的实部域虚部,记录两个复数运算的输出结果及运行截图。 原始数据:2.0 + 3.5i ,3.0 6.3i 两个复数相加输出 5.000000-2.800000i两个复数相减输出 -1.000000+9.800000i两个复数相乘输出 28.050001-2.100000i五、实验分析 在本次程序设计中,原有示例程序代码中的输出函数 putcharc()在输出时,如果复数的虚部部分系数为负数,显示结果中会带有加号和减号,为解决次问题,在输出函数中加入了if语句对虚部系数正负的比较,并分别输出,从而解决问题 在两个复数相乘的运算时,(2.0 + 3.5i)*(3.0-6.3i)的结果应该为28.05-2.1i,而程序的运行结果为28.050001-2.100000i,这是因为数据类型为float的数据表示的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论