C语言实现时针分针夹角计算
C语言实现时针分针夹角计算
问题描述
普通时钟都有时针和分针。在任意时刻,时针和分针都有一个夹角,并且假设时针和分针都是连续移动的。现已知当前的时刻,试求出在该时刻时针和分针的夹角A(0≤A≤180)。
注意:当分针处于0分和59分之间时,时针相对于该小时的起始位置也有一个偏移角度。
输入形式
输入一个24小时制的时间。格式是以英文字符冒号(:)分隔的两个整数m(0≤m≤23)和n(0≤n≤59),其中m表示时,n表示分。
输出形式
输出一个浮点数A,是时针和分针夹角的角度值。该浮点数保留三位小数。
样例输入
8:10
样例输出
175.000
样例说明
钟表指针角度的计算
-
分针走过1小格用时1分钟,走过的度数是6°,时针走过一大格用时1h,走过的度数是30°;
-
时针的速度是分钟的1/12,因此分针每走一小格即一分钟,时针走1/12*6°=0.5°;
-
在计算角度的时候,可以从整点整分开始考虑,再进行角度的加减运算,从而求出钟表实际的角度值。
例如:
8点10,可以假设时针正好在8上,度数为830°=240°;而实际上,分针转动,时针也是转动的,根据分针每走一分钟,时针走0.5°,可得10分的时候,时针转动了100.5°=5°;分针在2上,角度为10*6°=60°。因此,角度为:240°+5°-60°=185°,根据题目要求,时针和分针的夹角A(0≤A≤180)。因此8点10分的夹角为360°-185°=175°。
代码实现
#include <stdio.h>
int main() {
int hour, minute;
scanf('%d:%d', &hour, &minute);
float hourAngle = hour * 30 + minute * 0.5;
float minuteAngle = minute * 6;
float angle = hourAngle - minuteAngle;
if (angle < 0) {
angle += 360;
}
printf('%.3f', angle);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/o7D5 著作权归作者所有。请勿转载和采集!