C
来源:互联网 发布:淘宝网宠物 编辑:程序博客网 时间:2024/06/08 14:31
C - 夹角有多大
时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少。现在xhd知道的只有时间,请你帮他算出这个夹角。
注:夹角的范围
每组数据有三个整数h(0 <= h <24),m(0 <= m < 60),s(0 <= s < 60)分别表示时、分、秒。
28 3 175 13 30
13875
(原创)代码解析:
#include<stdio.h>#include<math.h>int main(){ int T; scanf("%d",&T); //数据的组数 while(T--) { int h,m,s; //定义所需变量 double t; scanf("%d%d%d",&h,&m,&s); if(h>12) h=h-12; //核心算法思想 t=fabs(30*(h+(double)m/60+(double)s/3600)-6*(m+(double)s/60)); if(t<=180) printf("%d\n",(int)t);//(int)t直接保留整数位,符合题意;而%0.lf有四舍五入,不能使用;
else printf("%d\n",(int)(360-t)); } return 0;
}
一、务必要申清题目所给数据,这点对解题算法的建立很重要;比如h(=0<h<24),容易忽略12-24这个时间段;
二、fabs()目的是对浮点数取绝对值;
abs()目的则是对整型数取绝对值。
三、浮点数到整型数的强制类型转换作用是直接取整数部分,忽略小数部分;
而%0.lf的作用是 对浮点数进行四舍五入取整数部分,要根据题目意思,选取合适的表达方式。