博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5-36 复数四则运算
阅读量:4617 次
发布时间:2019-06-09

本文共 2198 字,大约阅读时间需要 7 分钟。

本题要求编写程序,计算2个复数的和、差、积、商。

输入格式:

输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1iC2=a2+b2i的实部和虚部。题目保证C2不为0。

输出格式:

分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和、差、积、商,数字精确到小数点后1位。如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。

输入样例1:

2 3.08 -2.04 5.06

输出样例1:

(2.0+3.1i) + (-2.0+5.1i) = 8.1i(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i

输入样例2:

1 1 -1 -1.01

输出样例2:

(1.0+1.0i) + (-1.0-1.0i) = 0.0(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i(1.0+1.0i) * (-1.0-1.0i) = -2.0i(1.0+1.0i) / (-1.0-1.0i) = -1.0

解题思路:

这题不难,就是有点繁琐。四种运算输出的格式基本相似,就是运算符不一致。所以把它们输出过程放在了函数里。在输出格式上要多注意题目给的规则。

难点可能在于保留一位小数。因为非 0 不输出,double 型的数据如何比较到小数点后一位?如 0.004 数据应该是不输出的,但与 0 比较又大于 0。这里用的方法是:在比较的时候乘以 10 再强制将其转换成 int 型,这样就可以比较到小数点后一位。

解题代码:

#include
struct complex { double a; double b;};void Output (struct complex c[], double i, double j, char s); int main (){ struct complex c[2]; scanf("%lf %lf %lf %lf", &c[0].a, &c[0].b, &c[1].a, &c[1].b); double i, j; //用来存放最终结果 i = c[0].a + c[1].a; j = c[0].b + c[1].b; Output (c, i, j, '+'); i = c[0].a - c[1].a; j = c[0].b - c[1].b; Output (c, i, j, '-'); i = c[0].a * c[1].a - c[0].b * c[1].b; j = c[0].b * c[1].a + c[0].a * c[1].b; Output (c, i, j, '*'); i = (c[0].a * c[1].a + c[0].b * c[1].b) / (c[1].a * c[1].a + c[1].b * c[1].b); j = (c[0].b * c[1].a - c[0].a * c[1].b) / (c[1].a * c[1].a + c[1].b * c[1].b); Output (c, i, j, '/'); return 0; }void Output (struct complex c[], double i, double j, char s) { if (c[0].b >= 0) { printf("(%.1f+%.1fi) %c", c[0].a, c[0].b, s); } else { printf("(%.1f%.1fi) %c", c[0].a, c[0].b, s); } if (c[1].b >= 0) { printf(" (%.1f+%.1fi) ", c[1].a, c[1].b); } else { printf(" (%.1f%.1fi) ", c[1].a, c[1].b); } if ((int)(i*10)==0 && (int)(j*10)==0) { printf("= 0.0\n"); } else if ((int)(i*10) == 0) { printf("= %.1fi\n", j); } else if ((int)(j*10) == 0){ printf("= %.1f\n", i); } else if (j > 0) { printf("= %.1f+%.1fi\n", i, j); } else { printf("= %.1f%.1fi\n", i, j); } }

转载于:https://www.cnblogs.com/andywenzhi/p/5738670.html

你可能感兴趣的文章
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>
Restful levels
查看>>
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>