运用C语言学习知识编写复数的四则运算.doc

举报
资源描述
-* 运用C语言编写复数的四则运算 1、 需求分析 1. 设计一个可进行复数运算的演示程序 2. 实现下列六种基本运算: (1)由于输入的实部和虚部生成一个复数;(2)两个复数求和;(3)两个复数求差;(4)两个复数求积;(5)从已知复数中分离出虚部。运算结果一相应的复数或实数的表示形式显示。 3.程序执行的命令包括: a.输入数据生成一个复数 b.求复数和 c.求复数差 d.求复数积 4. (1)建立一个复数,然后根据提示用户输入两个复数,使得能同时进行两个复数的加.减.乘运算。 (2) 输入形式和输入值得范围:分别输入两个复数,其格式为:a+bi用enter结束输入。 (3) 输出形式:按程序规定输出其运算值。如:运算后只有实数时只输出实数虚部部分不表示,反之一样 5.测试程序 (1)0,0;0,0;应输出“0” (2)3.1,0;4.22, 8.9; 应输出“7.32+i8.9” (3) -1.33, 2.34; 0.1, -6.5; 应输出“-1.23-i4.16” (4) 0, 9.7; -2.1, -9.7;应输出“-2.1” (5) 7.7, -8;-7.7,0;应输出“-i8” 2. 概要分析 1. 为实现上述程序的功能,需要定义一个表示复数的抽象数据类型。 2. 本程序包含的函数: (1)主函数 main(); (2) 构造函数typedef struct(); (3) 调用函数 Complex createComplex(float a,float b) Complex add(Complex z1,Complex z2) Complex jian(Complex z1,Complex z2) Complex cheng(Complex z1,Complex z2) void printComplex(Complex z); 各函数关系如下: (5) 主函数伪代码 main( ) { 说明一个构造函数Complex; 定义两个实数和虚数分别为z1,z2; 提示输入实数和虚数z1,z2; 调用子函数; 提示输入+ - *; 根据输入的符号判断输入的复数做何运算 { 输入+时,调用加法子函数,打印输出; 输入-时,调用加法子函数,打印输出; 输入*时,调用加法子函数,打印输出; } } 3. 详细设计 1. 主函数及其他函数 #include #include typedef struct { float re; float im; } Complex; Complex createComplex(float a,float b) //编写一个函数生成复数// { Complex z; z.re=a; z.im=b; return z; } void printComplex(Complex z) //输出复数并控制其格式// { if(z.re==0&&z.im==0) printf("0\n"); else if(z.re!=0&&z.im==0) printf("%.2f\n",z.re); else if(z.re==0&&z.im!=0) { if(z.im>0) printf("i%.2f\n",z.im); else if(z.im<0) printf("-i%.2f\n",fabs(z.im)); } else { if(z.im>0) printf("%.2f+i%.2f\n",z.re,z.im); else printf("%.2f-i%.2f\n",z.re,fabs(z.im)); } } Complex add(Complex z1,Complex z2) { Complex z; z.re=z1.re+z2.re; z.im=z1.im+z2.im; return z; } Complex jian(Complex z1,Complex z2) { Complex z; z.re=z1.re-z2.re; z.im=z1.im-z2.im; return z; } Complex cheng(Complex z1,Complex z2) { Complex z; z.re=z1.re*z2.re-z1.im*z2.im; z.im=z1.re*z2.im+z1.im*z2.re; return z; } main() { float a,b,c,d; Complex z1,z2,c1,c2,c3; printf("请输入元素"); scanf("%f%f%f%f",&a,&b,&c,&d); //输入元素并调用函数生成复数z1,z2;并输出// z1=createComplex(a,b); z2=createComplex(c,d); printf("产生的两个复数为:"); printComplex(z1); printComplex(z2); c1=add(z1,z2); c2=jian(z1,z2); c3=cheng(z1,z2); printf("这两个复数的和差积:"); printComplex(c1); printComplex(c2); printComplex(c3); } 4. 调试及分析 1. 由于开始对于结构体使用并不熟悉,使用时语法错误很多,需要多加使用。 2. 编写是输入printf拼写错误(漏掉后面的f)导致该程序无法执行 3. 在使用“&&”符号是漏些了一个&符号,这点需要常记。 4. 对于声明的函数使用不熟练,在编写时对于其中的循环结构难以很流畅使用,即需要加强对for循环的使用。 5. 测试结果 1.数据0,0;0,0; 2.数据 3.1,0;4.22,8.9; 3. 数据 -1.33,2.34;0.1,-6.5; 4.数据 0,9.7;-2.1 -9.7; 5. 数据 7.7,-8;-7.7,0;
展开阅读全文
温馨提示:
得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 教育专区 > 教案示例


本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com