PAT 乙级 1051
题目
题目地址: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的更多相关文章
- PAT 乙级 1051 复数乘法 (15) C++版
1051. 复数乘法 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 复数可以写成(A + Bi)的常规 ...
- pat乙级1051
当结果中a或者b小于0,大于0.005时,保留两位小数会输出-0.00,但应输出0.00. #include <iostream> #include <math.h> usin ...
- PAT(B) 1051 复数乘法(Java)
题目链接:1051 复数乘法 (15 point(s)) 参考博客:1051 复数乘法(PAT 乙级 C++实现)-guangjinzheng 题目描述 复数可以写成 (A+Bi) 的常规形式,其中 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
随机推荐
- js new Date("2016-07-01 08:00:00") 格式在IE内核浏览器中显示NaN的问题
js new Date("2016-07-01 08:00:00") 格式在IE内核浏览器中显示NaN的问题 废话就不多了,var dd = new Date("2016 ...
- hdu4570-区间dp
这道题的题意不是一般的难懂啊,各种查字典都没理解,还是没忍住去看了别人的博客,没想到题很简单,1-n内划分若干个区间,使的每个区间和最小,每个区间的区间和是:区间开头的数*2^区间长度. 区间dp # ...
- Java EE学习笔记(九)
MyBatis的关联映射 1.关联关系概述 1).实际的开发中,对数据库的操作常常会涉及到多张表,这在面向对象中就涉及到了对象与对象之间的关联关系.针对多表之间的操作,MyBatis提供了关联映射,通 ...
- Hive_Hive的数据模型_视图
- 视图是一种虚表,是一个逻辑概念:可以跨越多张表- 视图建立在已有表的基础上,视图赖以建立的这些表称为基表.- 视图可以简化复杂的查询. 创建视图 create view viewName as s ...
- Spring创建对象的几种方法
一.通过构造器 无参构造器 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- 1550: Simple String 最大流解法
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1550 很久以前做的一题,当时队友用最大流做,现在我也是 这个转化为二分图多重匹配,就是一样的意 ...
- 讲明白combineByKey()算子,不是谈源码
简单介绍 combineByKey()是最通用的对key-value型rdd进行聚集操作的聚集函数(aggregation function).类似于aggregate(),combineByKey( ...
- spring和springmvc是单例还是多例
这么说其实不规范 spring的bean 默认是单例 springmvc的controller 默认是单例 所以最好不要在controller里定义成员变量 都可通过注解 @scope=p ...
- 六,IO系统
六,IO系统 一,数据源 1,数据源--管道确认使用那根管道--节点流 2,先确定管道在tey中new出管道,new出后就写关闭代码,写完关闭代码在写中间代码 3,取数据和放数据结束语句必须有两个,不 ...
- 【0 基础学Dojo】第【1】篇 HelloWord
打开dojo 官网首页 http://dojotoolkit.org/,我们看到 点击get dojo 你将得到下载Dojo 的不同方式 2,点击下面方式下载, 解压后 新建myTest.html, ...