时钟指针角度。
【问题描述】
普通时钟都有时针和分针。在任意时刻,时针和分针都有一个夹角,并且假设时针和分针都是连续移动的。现已知当前的时刻,试求出在该时刻时针和分针的夹角A(0≤A≤180)。
注意:当分针处于0分和59分之间时,时针相对于该小时的起始位置也有一个偏移角度。
【输入形式】
输入一个24小时制的时间。格式是以英文字符冒号(:)分隔的两个整数m(0≤m≤23)和n(0≤n≤59),其中m表示时,n表示分。
【输出形式】
输出一个浮点数A,是时针和分针夹角的角度值。该浮点数保留三位小数。
【样例输入】
8:10
【样例输出】
175.000
【样例说明】
钟表指针角度的计算
1.分针走过1小格用时1分钟,走过的度数是6°,时针走过一大格用时1h,走过的度数是30°;
2.时针的速度是分钟的1/12,因此分针每走一小格即一分钟,时针走1/12*6°=0.5°;
3.在计算角度的时候,可以从整点整分开始考虑,再进行角度的加减运算,从而求出钟表实际的角度值。
例如:
8点10,可以假设时针正好在8上,度数为8*30°=240°;而实际上,分针转动,时针也是转动的,根据分针每走一分钟,时针走0.5°,可得10分的时候,时针转动了10*0.5°=5°;分针在2上,角度为10*6°=60°。因此,角度为:240°+5°-60°=185°,根据题目要求,时针和分针的夹角A(0≤A≤180)。因此8点10分的夹角为360°-185°=175°。
输出结束不换行。
#include<stdio.h>
int main()
{
float final,fend,shid,shipianyi,shi,fen;
scanf("%f:%f",&shi,&fen);
if(shi>12)
{
shi=shi-12;
}
fend=(fen/60.0)*360.0;
shid=(shi/12)*360.0;
shipianyi=30*(fend/360.0);
final=fend-(shid+shipianyi);
if(final<0)
{
final=0-final;
}
if(final>180.0)
{
final=360.0-final;
}
printf("%.3f\n",final);
return 0;
}