1051. 复数乘法 (15)
来源:互联网 发布:活体脑细胞结局知乎 编辑:程序博客网 时间:2024/06/07 17:23
这道题是好题,不白错。
本题的关键考点在浮点数的位数保留上。
题中要求“在一行中按照“A+Bi”的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成“A-|B|i”的形式。”
只有付出才写成A-|B|i”的形式,但是如果保留两位小数的话,-0.005到0之间的负数会被保留0.00.但是输出判断的时候回判断它为负数,所以会输出-0.00的错误答案。
这是借鉴其他高手的程序:
#include<stdio.h> #include<iostream> #include<cmath> using namespace std; int main(){ double r1,r2; double p1,p2; cin>>r1>>p1>>r2>>p2; double ansA = r1*r2*cos(p1+p2); double ansB = r1*r2*sin(p1+p2); if(-0.005<ansA&&ansA<0)printf("0.00"); else printf("%.2f",ansA); if(ansB>=0)printf("+%.2fi\n",ansB); else if(-0.005<ansB&&ansB<0)printf("+0.00i\n"); else printf("%.2fi\n",ansB); return 0; }
这个是自己修改了无数遍才通过的渣渣程序:
// 2017/10/14 NCU // PAT-B 1053// scienceZ#include <cstdio>#include <cmath>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;double r1, p1, r2, p2, a, b, c, d, ans1, ans2;int main(){ cin >> r1 >> p1 >> r2 >> p2; a = r1*cos(p1); b = r1*sin(p1); c = r2*cos(p2); d = r2*sin(p2); ans1 = a*c-b*d; ans2 = a*d+c*b; if (ans1<0 && ans1>-0.005) ans1 = 0.00; if (ans2<0 && ans2>-0.005) ans2 = 0.00; if (ans2>=0) printf("%.2lf+%.2lfi", ans1, ans2); else printf("%.2lf%.2lfi", ans1, ans2); return 0;}
阅读全文
0 0
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- 1051. 复数乘法 (15)
- java关于外部类和内部类
- java
- Vue1.0 迁移2.0
- 计算机网络面试题
- 操作系统作业2
- 1051. 复数乘法 (15)
- 使用AXIS的CALL调用服务接口
- AndroidStudio修改包名和项目名称
- 个人常见mysql数据库问题记录
- JVM_13_类加载的时机
- CodeForces 55D Beautiful numbers (数位dp)
- Container With Most Water-水桶装水问题
- java
- 每天一个linux命令(11):nl命令