PTA 7-36 复数四则运算(详解)
前言:本期是关于复数四则运算的具体解法,今天你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 复数四则运算(详解)相关推荐
- 36 张图详解应用层协议:网络世界的最强王者
上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...
- PTA L1-006 连续因子(详解)
前言:本期是关于pta题目:连续因子的详解,今天你c了吗? 题目: 一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字 ...
- 36 张图详解 ARP :网络世界没有我,你哪也别想去
上帝视角 初识 ARP 从网络分层上看,我们知道二层网络中,使用 MAC 地址进行传输,MAC 地址做为数据链路层的设备标识符. 二层网络 三层网络中,使用 IP 地址进行传输,IP 地址做为网络层的 ...
- 36 张图详解 DNS :网络世界的导航
上帝视角 我们平时在访问网站时,不使用 IP 地址,而是网站域名.但是抓包发现:交互报文是以 IP 地址进行的.那么 IP 地址是从哪来的呢?这是因为 DNS 把网站域名自动转换为 IP 地址. 报文 ...
- 36张图详解网络基础知识
前言 网络协议 我们用手机连接上网的时候,会用到许多网络协议.从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络:手机自动获取网络配置,使用的是 DH ...
- 第九届蓝桥杯 Java B组 第三题 复数幂 (详解)
蓝桥杯 加油 (ง •_•)ง 标题:复数幂 设i为虚数单位.对于任意正整数n,(2+3i)^n 的实部和虚部都是整数. 求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂, ...
- python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 复 ...
- PTA L1-003 个位数统计(详解)
前言:本期是关于pta题目:个位数统计的详细解法,今天你c了吗? 题目: 给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1 ...
- C++求复数的角度_万物皆可傅里叶?复数傅里叶变换详解
来源:新浪博客,仅作学术交流,如有侵权请联系删文. 说的广义一点,"复数"是一个"概念",不是一种客观存在. 什么是"概念"? ...
- PTA L1-002 打印沙漏(详解)
前言:本期是关于pta题目打印沙漏的具体解法,今天你c了吗? 题目: 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ********* ...
最新文章
- antd checkbox 默认选中_antd 开发的一些坑(一)
- 怎么逐步突破,成为Python高手?
- 阿里云态势感知服务(上篇)
- 学python心得体会1000字-Python学习心得体会总结,不要采坑
- SyntaxError: expected expression, got ''
- C++ this指针初步使用,与链式编程
- 信息学奥赛C++语言: 验证子串
- 组装自己的php框架,搭建自己的PHP框架
- ArduinoUNO-IRremote 红外线接收模块使用(还没写完)
- python爬虫爬取圆通快递信息
- 电子警察技术原理分析
- Excel 文件怎么批量插入首页、扉页、尾页?怎么将某个 Excel 文件批量插入到其它 Excel 文件的指定位置?
- 联想G40-30进入PE鼠标键盘失灵解决方法
- (十一) ELK快速入门
- 五个国外在线时间管理(GTD)工具推荐
- 新手学PS要怎么起步?
- 安装opencv 3.4.1记录
- asp.net core web 解决方案多项目模板制作打包总结
- 推荐一个强大的工作流自动化工具...
- error LNK2019 ,error LNK2001:无法解析的外部符号,LINK : fatal error LNK1104: 无法打开文件