题目

题目地址:PAT 乙级 1051

思路

最近做题发现一个比较明显的现象——总是在做简单题的过程中出现这样那样的小问题,究其原因我认为还是有很多细节性的知识没有掌握,这是在以后的学习过程中需要注意的一个问题。

回来说这道题,在做这道题的过程中出现了两个失误:其一,审题不清,总是觉得题目比较简单所以略微看看就动手写,结果最后又从头返工;其二,精度问题,这是本题一直没做出来的最大的失误点,刚开始数据一直用的是单精度,结果总是有一分的样例点过不了,后改成双精度得以解决。

在做这道题的过程中,最大的收获是补了三个知识上的盲点;

1. printf函数的输出控制符,float 单精度——%f, double 双精度——%lf

2. %+的使用:加号"+"表示强制显示正负号 (+和-);例,x = 0.12345; printf("%+.2f\n", x); 输出结果:+0.12;

3. 计算三角函数时,可以直接引入math函数库,之后直接使用sin、cos等函数即可(函数double sin(double x))

这里引用C++ reference 的文档(原地址在此

 /*Parameters
x
Value representing an angle expressed in radians.
One radian is equivalent to 180/PI degrees. Return Value
Sine of x radians.
*/ //Example
/* sin example */
#include <stdio.h> /* printf */
#include <math.h> /* sin */ #define PI 3.14159265 int main ()
{
double param, result;
param = 30.0;
result = sin (param*PI/);
printf ("The sine of %f degrees is %f.\n", param, result );
return ;
} //Output:
//The sine of 30.000000 degrees is 0.500000.

代码

 #include <cstdio>
#include <cmath> int main() {
double a = , b = , c = , d = ;
bool flag1 = false, flag2 = false;
scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
double tmp1 = , tmp2 = ;
tmp1 = a * c * cos(b + d);
tmp2 = a * c * sin(b + d);
if (fabs(tmp1) < 0.01) flag1 = true;
if (fabs(tmp2) < 0.01) flag2 = true;
if (flag1 && flag2)
printf("0\n");
else if (flag1 && !flag2)
printf("0.00%+.2fi\n", tmp2);
else if (!flag1 && flag2)
printf("%.2f+0.00i\n", tmp1);
else
printf("%.2f%+.2fi\n", tmp1, tmp2); return ;
}

PAT 乙级 1051的更多相关文章

  1. PAT 乙级 1051 复数乘法 (15) C++版

    1051. 复数乘法 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 复数可以写成(A + Bi)的常规 ...

  2. pat乙级1051

    当结果中a或者b小于0,大于0.005时,保留两位小数会输出-0.00,但应输出0.00. #include <iostream> #include <math.h> usin ...

  3. PAT(B) 1051 复数乘法(Java)

    题目链接:1051 复数乘法 (15 point(s)) 参考博客:1051 复数乘法(PAT 乙级 C++实现)-guangjinzheng 题目描述 复数可以写成 (A+Bi) 的常规形式,其中 ...

  4. C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...

  5. PAT乙级真题及训练题 1025. 反转链表 (25)

    PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...

  6. PAT 乙级 1024

    题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...

  7. PAT 乙级 1017

    题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...

  8. PAT 乙级 1015

    题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...

  9. PAT 乙级 1003

    题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...

随机推荐

  1. PJzhang:子域名爆破工具wydomain(猪猪侠)

    猫宁!!! 参考链接:https://www.secpulse.com/archives/53182.html https://www.jianshu.com/p/65c85f4b7698 http: ...

  2. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...

  3. C 语言实例 - 计算自然数的和

    C 语言实例 - 计算自然数的和 自然数是指表示物体个数的数,即由0开始,,,,,,……一个接一个,组成一个无穷的集体,即指非负整数. 实例 - 使用 for #include <stdio.h ...

  4. JavaScript进阶 - 第10章 编程挑战

    10-1 编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图:

  5. PAT甲级——1110 Complete Binary Tree (完全二叉树)

    此文章同步发布在CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90317830   1110 Complete Binary ...

  6. [Java]HashSet的工作原理

    概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). It ...

  7. BZOJ 1977: [BeiJing2010组队]次小生成树 Tree 倍增 最小生成树

    好吧我太菜了又调了一晚上...QAQ 先跑出最小生成树,标记树边,再用树上倍增的思路,预处理出: f[u][i] :距离u为2^i的祖先 h[u][i][0/1] :距u点在2^i范围内的最长边和次长 ...

  8. EOJ Problem #3261 分词 trie + dp + 小剪枝

    http://acm.ecnu.edu.cn/problem/3261/ 分词 Time limit per test: 1.0 seconds Time limit all tests: 1.0 s ...

  9. VS2012,更新补丁后的残忍--创建项目未找到与约束匹配的导出

    解决方法网址:http://blog.csdn.net/jly4758/article/details/18660945

  10. 洛谷 P1807 最长路_NOI导刊2010提高(07)

    最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> ...