数据结构实验报告范例.docVIP

  • 18
  • 0
  • 约3.26千字
  • 约 6页
  • 2016-05-23 发布于重庆
  • 举报
数据结构实验报告范例

实验报告 实验题目 [问题描述] 设计一个可进行复数运算的演示程序。 [基本要求] 实现下列六种基本运算: 由输入的实部和虚部生成一个复数 两个复数求和 两个复数求差 两个复数求积 从已知复数中分离出实部 从已知复数中分离出虚部 运算结果以相应的复数或实数的表示形式显示。 概要设计 定义复数类型: ADT Complex{ 数据对象:D={ci|ci=(real,image),real∈实数,image∈实数,i=1,2,3,…} 数据关心:R1={} 基本操作: C_Sum(C,C1,C2) 初始条件:复数C1,C2存在。 操作结果:做和运算C1+C2,结果放在C中。 C_Difference(C,C1,C2) 初始条件:复数C1,C2存在。 操作结果:做减运算C1-C2,结果放在C中。 C_Product(C,C1,C2) 初始条件:复数C1,C2存在。 操作结果:做乘运算C1*C2,结果放在C中。 C_Print(C) 初始条件:复数C存在。 操作结果:将复数C以“实部+虚部i”的形式显示输出。 }ADT Complex 2.程序包含四个模块 主程序模块 main() {初始化; 选择命令; while(“命令”!=“退出”) {处理命令;} } 两复数求和模块 两复数求差模块 两复数求积模块 打印复数模块 3.程序流程图 详细设计 复数数据类型 typedef struct {float real; float image; }complex,*complex_ptr; void C_Difference(complex_ptr C,complex C1,complex C2) //将复数C1,C2相减,结果放入复数指针C所指向的复数单元中去。 void C_Product(complex_ptr C,complex C1,complex C2) //将复数C1,C2相乘,结果放入复数指针C所指向的复数单元中去。 void C_Print(complex_ptr C) //将复数指针C所指向的复数单元中的内容以“实部+虚部i”的形式显示输出。 . 调试分析 项目选择“choice”变量的类型定义。 起初choice变量是定义为int型,其值范围在1、2、3、4内。但考虑到在实际操作中,用户可能存在随意按键的情况,即输入任意字符或字符串,因此将choice定义为char型,其值范围在字符集{‘1’,‘2’,‘3’,‘4’}内。 对于键盘缓冲区清空的处理 在实际运行中,发现程序不能正常循环,表现在choice变量不能重复赋值。现象是在第一次复数运算结束后,程序在给出命令菜单后,提示用户选择,并等待输入。但情况并非如此,程序并未等待直接要求用户输入第一个复数值。通过分析是之前输入的内容影响对choice变量赋值的scanf语句的执行。 如图: 解决办法是使用fflush(stdin),对键盘缓冲区作清空处理,该库函数是在stdio.h文件中定义的。 测试结果 加运算 输入: 复数一:1,3 复数二:2,4 结果:3.000000+7.000000i 减运算 复数一:3.4,5.6 复数二:2.7,4.8 结果:0.700000+0.800000i 3.乘运算 复数一:7,8 复数二:9.1,2.5 结果:43.700005+90.300003i 附录 源程序代码: #include stdio.h typedef struct{ float real; float image; }complex,*complex_ptr; void C_Sum(complex_ptr c_ptr,complex com1,complex com2) {c_ptr-real=com1.real+com2.real; c_ptr-image=com1.image+com2.image; } void C_Difference(complex_ptr c_ptr,complex com1,complex com2) {c_ptr-real=com1.real-com2.real; c_ptr-image=com1.image-com2.image; } void C_Product(complex_ptr c_ptr,complex com1,complex com2) {c_ptr-real=com1.real*com2.real-com1.image*com2.image; c_ptr-image=com1.real*com2.image+com1.image*com2.real; } void C_Print(complex_ptr c_ptr) {printf(\nThe result is:%f+%fi\n,c_p

文档评论(0)

1亿VIP精品文档

相关文档