栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

1051 复数乘法 (15 分)(测试点二测试点三答案错误)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1051 复数乘法 (15 分)(测试点二测试点三答案错误)

1051 复数乘法 (15 分) 题目链接 算法分析

主要就是数学运算,高中及以上应该问题不大
R 1 ∗ e P 1 ∗ i × R 2 ∗ e P 2 ∗ i = ( R 1 ∗ R 2 ) ∗ e ( P 1 + P 2 ) i R_1*e^{P_1*i}×R_2*e^{P_2*i}=(R_1*R_2)*e^{(P_1+P_2)i} R1​∗eP1​∗i×R2​∗eP2​∗i=(R1​∗R2​)∗e(P1​+P2​)i
A = ( R 1 ∗ R 2 ) ∗ c o s ( P 1 + P 2 ) A=(R_1*R_2)*cos(P_1+P_2) A=(R1​∗R2​)∗cos(P1​+P2​)
B = ( R 1 ∗ R 2 ) ∗ s i n ( P 1 + P 2 ) B=(R_1*R_2)*sin(P_1+P_2) B=(R1​∗R2​)∗sin(P1​+P2​)
然后格式化输出A+Bi即可

测试点

这是一开始的情况


后来发现了问题,出在:我没有对+0.00和-0.00进行统一,按照题目测试点的要求,A的绝对值如果小于0.005,则输出0.00,B的绝对值如果小于0.005,则输出+0.00.
注意:printf自带四舍五入。
补充知识:%+d或者%+f可以带符号输出变量(代码变得更简洁了 )。
对特殊情况进行判断,就通过了。

代码实现
#include
using namespace std;

int main(){
	double a, b, c, d;
	scanf("%lf%lf%lf%lf", &a, &b, &c, &d);
	double A = a * c * cos(b + d), B = a * c * sin(b + d);
	if(fabs(A) < 0.005) printf("0.00");
	else	printf("%.2f", A);
	if(fabs(B) < 0.005) printf("+0.00i");
	else	printf("%+.2fi", B);
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号