您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 数据结构实验之实现两个复数的四则运算
《数据结构》实验报告院系应用科技学院专业电子信息工程姓名陈高雪学号120352010054电话1506041272010级电信班2011年10月11日1.实验目的了解并掌握用c语言来编写数据结构源程序的方法。2.需求分析首先建立一个复数,然后根据提示用户输入两个复数,使得能同时进行两个复数的加、减、乘、除运算。输入形式和输入值的范围:分别输入两个复数,其格式为:a+bi用enter结束输入。输出的形式:按程序规定输出其运算值,如:运算后只有实数时只输出实数虚数部分不表示,反之一样。3.概要设计(1)为了实现上述程序的功能,需要定义一个表示复数的抽象数据类型。(2)本程序包含的函数:主函数main()构造函数typedefstruct{};调用函数:fushuceartfushu(floata,floatb)fushuadd(fushuc1,fushuc2)fushusub(fushuc1,fushuc2)fushumul(fushuc1,fushuc2)fushudiv(fushucv1,fushuc2)voidprint_Z(fushuz)各函数关系如下:(3)主函数的伪码main(){说明一个构造函数fushu;定义两个实数和虚数分别为z1,z2;定义符号变量ch;提示输入实数和虚数z1,z2;调用子函数;提示输入+-*/;循环做下面处理直至输入“0”:{判断输入的符号做下面处理:{输入+时,调用加法子函数,打印输出;输入-时,调用减法子函数,打印输出;输入*时,调用乘法子函数,打印输出;输入/时,调用除法子函数,打印输出;提示输入+-*/;}}}4.详细设计#includestdio.htypedefstructComplex//构造一个复数Complex{floatreal;//定义实数为realfloatimag;//定义虚数为image}fushu;fushuceartfushu(floata,floatb);//调用函数的宏定义fushuadd(fushuc1,fushuc2);fushusub(fushuc1,fushuc2);fushumul(fushuc1,fushuc2);fushudiv(fushucv1,fushuc2);voidprint_Z(fushuz);fushuceartfushu(floata,floatb)//复数调用函数{fushuz;//定义一个复数zz.real=a;//将a付给z的实部z.imag=b;//将b付给z的虚部returnz;}fushuadd(fushuc1,fushuc2)//加法调用函数{fushusum;sum.real=c1.real+c2.real;//实部加法运算sum.imag=c1.imag+c2.imag;//虚部加法运算returnsum;}fushusub(fushuc1,fushuc2)//减法调用函数{fushucha;cha.real=c1.real-c2.real;//实部减法运算cha.imag=c1.imag-c2.imag;//虚部减法运算returncha;}fushumul(fushuc1,fushuc2)//乘法调用函数{fushuji;ji.real=c1.real*c2.real-c1.imag*c2.imag;//实部乘法运算ji.imag=c1.imag*c2.real+c1.real*c2.imag;//虚部乘法运算returnji;}fushudiv(fushuc1,fushuc2)//除法调用函数{fushushang;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);//虚部除法运算returnshang;}voidprint_Z(fushuz)//输出调用函数{if(z.imag==0)//判断运算后虚数部分是否为0printf(结果为:%0.2f\n,z.real);//是,就输出实部elseif(z.real==0)//判断运算后实数部分是否为0printf(结果为:%0.2fi\n,z.imag);//是,就输出虚部elseprintf(结果为:%0.2f+%0.2fi\n,z.real,z.imag);//否则输出实数和虚部}voidmain(){fushuv1,v2,sum,cha,ji,shang;floatz1,z2;//定义实部和虚部charch;//定义符号printf(pleaseinpurfirstfushunumber:);//提示输入第一个复数scanf(%f+%fi,&z1,&z2);//输入语句v1=ceartfushu(z1,z2);//赋值语句printf(theotherone:);//提示输入scanf(%f+%fi,&z1,&z2);v2=ceartfushu(z1,z2);printf(pleasechoiceoperation:+,-,*or/:);//提示输入运算符号getchar();//收集运算符ch=getchar();//将收集到的符号赋给chwhile(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;default:printf(enterdataerror!\n);printf(\n);printf(pleasechoiceoperation:+,-,*or/:);//提示输入运算符}ch=getchar();}}5.使用说明程序名为实验0.exe,程序执行如下:提示用户输入第一个复数;用户按要求输入第一个复数,然后按enter;提示用户输入第二个复数;用户按要求输入第二个复数,然后按enter;提示用户输入运算符号;用户输入所提示的运算符,按enter;直至用户输入0是,运算结束,按任意键退出程序;6.测试结果
本文标题:数据结构实验之实现两个复数的四则运算
链接地址:https://www.777doc.com/doc-7215010 .html