前言:本期是关于复数四则运算的具体解法,今天你c了吗?

题目:

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

输入格式:

输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=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

 代码实现:

#include<stdio.h>
#include<math.h>
int main()
{double a1 = 0.0;double b1 = 0.0;double a2 = 0.0;double b2 = 0.0;scanf("%lf %lf %lf %lf", &a1, &b1, &a2, &b2);char ch[10] = { '+','-', '*','/' };double real[4] = { 0 };double image[4] = { 0 };//+-*/的结果的实部分别存入real数组中real[0] = a1 + a2;real[1] = a1 - a2;real[2] = a1 * a2 - b1 * b2;real[3] = (a1 * a2 + b1 * b2) / (pow(a2, 2) + pow(b2, 2));//+-*/ 的结果的虚部分别存入real数组中image[0] = b1 + b2;image[1] = b1 - b2;image[2] = a1 * b2 + a2 * b1;image[3] = (a2 * b1 - a1 * b2) / (pow(a2, 2) + pow(b2, 2));//打印int i = 0;for (i = 0; i < 4; i++){//实部虚部都无if (fabs(real[i]) < 0.05 && fabs(image[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = 0.0\n", a1, b1, ch[i], a2, b2);}//只有实部else if (fabs(image[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1f\n", a1, b1, ch[i], a2, b2,real[i]);}//只有虚部else if (fabs(real[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1fi\n", a1, b1, ch[i], a2, b2, image[i]);}//实部虚部都有else{printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1f%+.1fi\n", a1, b1, ch[i], a2, b2, real[i],image[i]);}}return 0;
}

大致思路: 

1.加 减 乘 除各自都有自己结果的虚部和实部,将这四个实部集合在一起,四个虚部集合在一起

2.加 减 乘 除各自都有四种不同的结果可能:

a: 结果为0.0, b: 结果只有实部 ,c:结果只有虚部,d:结果的实部虚部都有


代码解读:

part 1

    double a1 = 0.0;double b1 = 0.0;double a2 = 0.0;double b2 = 0.0;scanf("%lf %lf %lf %lf", &a1, &b1, &a2, &b2);char ch[10] = { '+','-', '*','/' };

1. 读取a1,b1,a2,b2

2.将+ - * / 这四种运算符存入字符数组中(后面的循环打印要用)


part 2 

    double real[4] = { 0 };double image[4] = { 0 };//+-*/的结果的实部分别存入real数组中real[0] = a1 + a2;real[1] = a1 - a2;real[2] = a1 * a2 - b1 * b2;real[3] = (a1 * a2 + b1 * b2) / (pow(a2, 2) + pow(b2, 2));//+-*/ 的结果的虚部分别存入real数组中image[0] = b1 + b2;image[1] = b1 - b2;image[2] = a1 * b2 + a2 * b1;image[3] = (a2 * b1 - a1 * b2) / (pow(a2, 2) + pow(b2, 2));

1.用real数组存储+ - * / 运算结果的实部

2.用image数组存储+ - * / 运算结果的虚部

tips:

复数的加法运算:实部+实部,虚部+虚部

复数的减法运算:实部-实部,虚部-虚部

复数的乘法运算:(a1+b1i)*(a2+b2i)=a1*a2+a1*b2i+a2*b1i+b1*b2i^2 (就是简单的相乘)

复数的除法运算:(a1+b1i)/(a2+b2i):这两个多项式分别乘以第二个多项式的共轭式:(a2-b2i)

pow函数是用于计算某个数的平方


part 3

//打印int i = 0;for (i = 0; i < 4; i++){//实部虚部都无if (fabs(real[i]) < 0.05 && fabs(image[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = 0.0\n", a1, b1, ch[i], a2, b2);}//只有实部else if (fabs(image[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1f\n", a1, b1, ch[i], a2, b2,real[i]);}//只有虚部else if (fabs(real[i]) < 0.05){printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1fi\n", a1, b1, ch[i], a2, b2, image[i]);}//实部虚部都有else{printf("(%.1f%+.1fi) %c (%.1f%+.1fi) = %.1f%+.1fi\n", a1, b1, ch[i], a2, b2, real[i],image[i]);}}

1. for循环打印+ - * / 的运算式子+结果

2.+ - * / 分别都有四种输出结果的可能:

a: 结果为0.0, b: 结果只有实部 ,c:结果只有虚部,d:结果的实部虚部都有

用if else 语句就可解决

tips:

%+.1fi: 当这个虚部是正数时,会显示+,当这个虚部是负数时,会显示-

本期完!今天你c了吗?

PTA 7-36 复数四则运算(详解)相关推荐

  1. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

  2. PTA L1-006 连续因子(详解)

    前言:本期是关于pta题目:连续因子的详解,今天你c了吗? 题目:  一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字 ...

  3. 36 张图详解 ARP :网络世界没有我,你哪也别想去

    上帝视角 初识 ARP 从网络分层上看,我们知道二层网络中,使用 MAC 地址进行传输,MAC 地址做为数据链路层的设备标识符. 二层网络 三层网络中,使用 IP 地址进行传输,IP 地址做为网络层的 ...

  4. 36 张图详解 DNS :网络世界的导航

    上帝视角 我们平时在访问网站时,不使用 IP 地址,而是网站域名.但是抓包发现:交互报文是以 IP 地址进行的.那么 IP 地址是从哪来的呢?这是因为 DNS 把网站域名自动转换为 IP 地址. 报文 ...

  5. 36张图详解网络基础知识

    前言 网络协议 我们用手机连接上网的时候,会用到许多网络协议.从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络:手机自动获取网络配置,使用的是 DH ...

  6. 第九届蓝桥杯 Java B组 第三题 复数幂 (详解)

    蓝桥杯 加油 (ง •_•)ง 标题:复数幂 设i为虚数单位.对于任意正整数n,(2+3i)^n 的实部和虚部都是整数. 求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂, ...

  7. python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 复 ...

  8. PTA L1-003 个位数统计(详解)

    前言:本期是关于pta题目:个位数统计的详细解法,今天你c了吗? 题目:  给定一个 k 位整数 N=dk−1​10k−1+⋯+d1​101+d0​ (0≤di​≤9, i=0,⋯,k−1, dk−1 ...

  9. C++求复数的角度_万物皆可傅里叶?复数傅里叶变换详解

    来源:新浪博客,仅作学术交流,如有侵权请联系删文.     说的广义一点,"复数"是一个"概念",不是一种客观存在.    什么是"概念"? ...

  10. PTA L1-002 打印沙漏(详解)

    前言:本期是关于pta题目打印沙漏的具体解法,今天你c了吗?  题目: 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ********* ...

最新文章

  1. antd checkbox 默认选中_antd 开发的一些坑(一)
  2. 怎么逐步突破,成为Python高手?
  3. 阿里云态势感知服务(上篇)
  4. 学python心得体会1000字-Python学习心得体会总结,不要采坑
  5. SyntaxError: expected expression, got ''
  6. C++ this指针初步使用,与链式编程
  7. 信息学奥赛C++语言: 验证子串
  8. 组装自己的php框架,搭建自己的PHP框架
  9. ArduinoUNO-IRremote 红外线接收模块使用(还没写完)
  10. python爬虫爬取圆通快递信息
  11. 电子警察技术原理分析
  12. Excel 文件怎么批量插入首页、扉页、尾页?怎么将某个 Excel 文件批量插入到其它 Excel 文件的指定位置?
  13. 联想G40-30进入PE鼠标键盘失灵解决方法
  14. (十一) ELK快速入门
  15. 五个国外在线时间管理(GTD)工具推荐
  16. 新手学PS要怎么起步?
  17. 安装opencv 3.4.1记录
  18. asp.net core web 解决方案多项目模板制作打包总结
  19. 推荐一个强大的工作流自动化工具...
  20. error LNK2019 ,error LNK2001:无法解析的外部符号,LINK : fatal error LNK1104: 无法打开文件

热门文章

  1. fanuc c语言编程实例,FANUC机器人程序案例参考
  2. H265码流分析详解
  3. 黑月教主去水印软件_去视频水印的软件有什么?这个多功能转换器
  4. 区块链运营总监招聘要求
  5. 1的阶乘到100的阶乘之和
  6. nginx+mysql+端口映射_最浅显易懂的使用nginx实现端口映射的教程
  7. RSTP与MSTP协议
  8. 【性能测试】辅助命令10连击
  9. STM32正交编码器测速
  10. java毕业设计校园墙系统mybatis+源码+调试部署+系统+数据库+lw