复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式(R(cos(P) + isin(P))。

现给定两个复数的R和P,要求输出两数乘积的常规形式。

输入格式:

输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。

输出格式:

在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。
输入样例:

2.3 3.5 5.2 0.4

输出样例:

-8.68-8.23i

错误代码:

/*************************************************************************> File Name: 1051.c> Author: YueBo > Function:复数乘法> Created Time: 2016年11月23日 星期三 22时16分44秒************************************************************************/#include <stdio.h>
#include <math.h>float myRound(float x)
{float val = 0.0;if (x >= 0) {val = x * 1000 + 5;} else {val = x * 1000 - 5;}val = (int)(val / 10);val = val / 100.0;return val;
}int main()
{float R1, P1, R2, P2, R3, P3;float temp1 = 0.0, temp2 = 0.0;scanf("%f%f%f%f", &R1, &P1, &R2, &P2);R3 = R1 * R2;P3 = P1 + P2;temp1 = myRound(R3*sin(P3));temp2 = myRound(R3*cos(P3));if (temp1 >= 0) {printf("%.2f+%.2fi", temp2, temp1);} else {printf("%.2f%.2fi", temp2, temp1);}return 0;
}

错误提示:

错误原因:

总有一个测试数据过不去,感觉怪异的不得了,怎么检查都查不出错误,后来查看别人的代码发现是自己数据类型用错啦,由于float的精度在中间结果中可能会出错,譬如说0.000000003 × 10000000 == 0,这样的错误,因为float是8位有效数字,double是16位有效数字,很明显把上面所有的float改成double就OK啦☺,由此发现,对于科学计算,一定要用double及精度在之之上的数据类型。

正确代码

#include <stdio.h>
#include <math.h>double myRound(double x)
{double val = 0.0;if (x >= 0) {val = x * 1000 + 5;} else {val = x * 1000 - 5;}val = (int)(val / 10);val = val / 100.0;return val;
}int main()
{double R1, P1, R2, P2, R3, P3;double temp1 = 0.0, temp2 = 0.0;scanf("%lf%lf%lf%lf", &R1, &P1, &R2, &P2);R3 = R1 * R2;P3 = P1 + P2;temp1 = myRound(R3*sin(P3));temp2 = myRound(R3*cos(P3));if (temp1 >= 0) {printf("%.2f+%.2fi", temp2, temp1);} else {printf("%.2f%.2fi", temp2, temp1);}return 0;
}

之所以自己写一个四舍五入的函数而不用printf自动进行四舍五入是因为,printf("%.2f", -0.0002);结果为-0.00,其实这样做还是麻烦啦,稍微对printf函数进行限制一下就OK啦,

代码如下:

/*************************************************************************> File Name: 1051.c> Author: YueBo > Function:复数乘法> Created Time: 2016年11月23日 星期三 22时16分44秒************************************************************************/#include <stdio.h>
#include <math.h>int main()
{double R1, P1, R2, P2, Re, Im;scanf("%lf%lf%lf%lf", &R1, &P1, &R2, &P2);Re = R1 * R2 * cos(P1+P2);Im = R1 * R2 * sin(P1+P2);if (-0.005<Re && Re<0) {printf("0.00");} else {printf("%.2f", Re);}if (-0.005<Im && Im<0) {printf("+0.00i");} else if (Im >= 0) {printf("+%.2fi", Im);} else {printf("%.2fi", Im);}return 0;
}

1051. 复数乘法 (15)相关推荐

  1. C++学习之路 | PTA乙级—— 1051 复数乘法 (15 分)(精简)

    1051 复数乘法 (15 分) 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i ​2 ​​ =−1:也可以写成极坐标下的指数形式 (R×e ​(Pi) ...

  2. 1051. 复数乘法 (15)-PAT乙级真题

    复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1:也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形 ...

  3. 1051 复数乘法 (15 分)借鉴C++ PAT (Basic Level) Practice

    1051 复数乘法 (15 分) 输出格式: 在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚部均保留 2 位小数.注意:如果 B 是负数,则应该写成 A-|B|i 的形式. 输入样例: ...

  4. PTA 1051 复数乘法 (15 分) C++实现

    1051 复数乘法 (15 分) 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2 = −1:也可以写成极坐标下的指数形式 (R×e(Pi) ),其中 ...

  5. 【PAT乙级】1051 复数乘法 (15 分)

    题目地址 #include<cstdio> #include<iostream> #include<string> #include<cmath> us ...

  6. PAT 乙级 1051. 复数乘法 (15) Java版

    复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1:也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形 ...

  7. C++/Python PAT乙级1051 复数乘法 (15分)

    复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​^2=−1:也可 以写成极坐标下的指数形式 (R×e​(Pi)),其中 R 是复数模,P 是辐角,i 是 ...

  8. 【Python】 1051 复数乘法 (15 分)

    复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​2​​ =−1:也可以写成极坐标下的指数形式 (R×e​(Pi)​​ ),其中 R 是复数模,P 是辐角 ...

  9. 1051 复数乘法 (15分)

    复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i​2​​=−1:也可以写成极坐标下的指数形式 (R×e​(Pi)​​),其中 R 是复数模,P 是辐角,i ...

最新文章

  1. 如何使用 Ansible 和 anacron 实现自动化
  2. 【转载】变量的存储类别
  3. Kylin启动报错hbase-common lib not found
  4. Cron表达式 详解
  5. 软件测试必学之python+unittest+requests+HTMLRunner编写接口自动化测试集
  6. 旧iPhone手机钱包中公交卡 银行卡 转移到新手机iPhone11上
  7. 萧红二不二?人是在最日常的生活中流逝的……你窗边革命洪流过去的时候,可能你正在剥一颗鸡蛋
  8. 记录开发内容demo-java支付宝提现
  9. STAF 删除文件操作
  10. 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。(js代码)
  11. Lyapunov stability analysis、LaSalle’s invariance principle、Barbalat’s lemma
  12. Hystrix php,详解 hystrix-go 使用与原理
  13. 我自己的java软件开发职业规划
  14. 《高效能人士的七个习惯》分享
  15. CSS (3) | 盒子
  16. E. Binary Inversions——前缀+后缀
  17. 华为od机考题目-幼儿园找出同班的小朋友(幼儿园分班)
  18. 远程桌面控制软件 Splashtop 新增本地部署版产品 On-Prem
  19. python积木编程软件_童心制物慧编程全新 Python 编辑器正式上线
  20. 如何将html转换成avi,MP4如何转换AVI格式 如何将MP4转换成AVI

热门文章

  1. java学习(7):巩固练习
  2. 下列可以产生斜体字的html标签是,电子科技大学《网页设计与制作》20秋期末考试题目【标准答案】...
  3. 数据结构算法入门--链表
  4. android所有颜色代码
  5. html5qq邮箱代码,使用qq邮箱批量发送邮件 实例源码(支持富文本)
  6. jboss eap 6.2 ear包 下使用log4j日志
  7. java算法之冒泡排序
  8. mac 删除垃圾篓中的文件
  9. bsgs(Baby Steps Giant Steps)算法
  10. (五十五)iOS多线程之GCD