当前位置:文档之家› 数据结构实验报告样本

数据结构实验报告样本

《数据结构》实验报告

院系应用科技学院专业电子信息工程姓名陈高雪学号120352010054

电话150********

10 级电信班2011 年10 月11日

1.实验目的

了解并掌握用c语言来编写数据结构源程序的方法。

2.需求分析

首先建立一个复数,然后根据提示用户输入两个复数,

使得能同时进行两个复数的加、减、乘、除运算。

输入形式和输入值的范围:分别输入两个复数,其格

式为:a+bi用enter结束输入。

输出的形式:按程序规定输出其运算值,如:运算后

只有实数时只输出实数虚数部分不表示,反之一样。

3.概要设计

(1)为了实现上述程序的功能,需要定义一个表示复数

的抽象数据类型。

(2)本程序包含的函数:

●主函数main()

●构造函数typedef struct {};

●调用函数:fushu ceartfushu(float a,float

b)

fushu add(fushu c1,fushu c2)

fushu sub(fushu c1,fushu c2)

fushu mul(fushu c1,fushu c2)

fushu div(fushu cv1,fushu c2)

void print_Z(fushu z)

各函数关系如下:

(3)主函数的伪码

main()

{

说明一个构造函数fushu;

定义两个实数和虚数分别为z1,z2;

定义符号变量ch;

提示输入实数和虚数z1,z2;

调用子函数;

提示输入+ - * /;

循环做下面处理直至输入“0”:

{

判断输入的符号做下面处理:

{

输入+时,调用加法子函数,打印

输出;

输入-时,调用减法子函数,打印

输出;

输入*时,调用乘法子函数,打印

输出;

输入/时,调用除法子函数,打印

输出;

提示输入+-*/;

}

}

}

4.详细设计

#include

typedef struct Complex //构造一个复数Complex

{

float real; //定义实数为real float imag; //定义虚数为image

}fushu;

fushu ceartfushu(float a,float b); //调用函数的宏定义

fushu add(fushu c1,fushu c2);

fushu sub(fushu c1,fushu c2);

fushu mul(fushu c1,fushu c2);

fushu div(fushu cv1,fushu c2);

void print_Z(fushu z);

fushu ceartfushu(float a,float b) //复数调用函数{

fushu z; //定义一个复数z

z.real=a; //将a付给z的实部

z.imag=b; //将b付给z的虚部

return z;

}

fushu add(fushu c1,fushu c2) //加法调用函数{

fushu sum;

sum.real=c1.real+c2.real; //实部加法运算

sum.imag=c1.imag+c2.imag; //虚部加法运算return sum;

}

fushu sub(fushu c1,fushu c2) //减法调用函数{

fushu cha;

cha.real=c1.real-c2.real; //实部减法运算

cha.imag=c1.imag-c2.imag; //虚部减法运算

return cha;

}

fushu mul(fushu c1,fushu c2) //乘法调用函数

{

fushu ji;

ji.real=c1.real*c2.real-c1.imag*c2.imag; //实部乘法运算

ji.imag=c1.imag*c2.real+c1.real*c2.imag; //虚部乘法运算

return ji;

}

fushu div(fushu c1,fushu c2) //除法调用函数

{

fushu shang;

shang.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2. real*c2.real+c2.imag*c2.imag); //实部除法运算shang.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2 .real*c2.real+c2.imag*c2.imag); //虚部除法运算return shang;

}

void print_Z(fushu z) //输出调用函数

{

if (z.imag==0) //判断运算后虚数部分是否为0

printf("结果为:%0.2f\n",z.real); //是,就输出实部

else

if(z.real==0) //判断运算后实数部分是否为0

printf("结果为:%0.2fi\n",z.imag); //是,就输出虚部

else

printf("结果为:%0.2f+%0.2fi\n",z.real,z.imag); //否则输出实数和虚部

}

void main()

{

fushu v1,v2,sum,cha,ji,shang;

float z1,z2; //定义实部和虚部

char ch; //定义符号

printf("please inpur first fushu number:"); //提示输入第一个复数

scanf("%f+%fi",&z1,&z2); //输入语句

v1=ceartfushu(z1,z2); //赋值语句

printf("the other one:"); //提示输入

scanf("%f+%fi",&z1,&z2);

v2=ceartfushu(z1,z2);

printf("please choice operation: +, -, * or /:");//提示输入运算符号

getchar(); //收集运算符ch=getchar(); //将收集到的符号赋给ch while(ch!='0') //循环语句

{

switch(ch) //判断语句

{

case'+': sum=add(v1,v2);print_Z(sum);break; /*调用子函数运算语句*/

case'-': cha=sub(v1,v2);print_Z(cha);break;

case'*': ji=mul(v1,v2);print_Z(ji);break;

case'/':

shang=div(v1,v2);print_Z(shang);break;

相关主题
文本预览
相关文档 最新文档