如图,给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。
输入包含多组测试数据,每组测试数据由一个按hh:mm表示的时刻组成。
对于每组测试数据,输出一个浮点数,代表时针和分针的夹角(劣弧对应的角),用角度表示,结果保留两位小数。
03:00 14:45
90.00 172.50
求时针和分针的夹角(劣弧所对应的角)。需要注意的是分针指的一定是整刻度,而时针不一定,因为分针走的同时,时针也在微小的走,所以要求出时针偏离整刻度的偏移量。分针指的刻度为0到60,把时针也换成相同的格式h*5就可以了,每个单位刻度代表6度(360除以60)然后求劣弧所对应的角,两种情况 , abs( h- m ) 和 60- max (h,m) + min(h,m) ,取两者的最小值就可以了。
代码:
#include <iostream> #include <iomanip> using namespace std; double h,m; char c; int main() { while(cin>>h) { cin>>c>>m; if(h>12) h-=12; h*=5;//换成和分针数字一样的计数标准,0到60,每个刻度代表的角度为360/60=6 h=h+(m*1.0/60)*5;//计算时针偏离整点的偏移量 if(h<m)//为了方便,始终让时针为大数字 { double temp; temp=h; h=m; m=temp; } double result; if(h-m<60-h+m)//时针和分针所组成的优弧和劣弧,取劣弧 result=h-m; else result=60-h+m; result*=6;//每个刻度为6度 cout<<setiosflags(ios::fixed)<<setprecision(2)<<result<<endl; } return 0; }
[ACM] 九度OJ 1553 时钟,布布扣,bubuko.com
原文:http://blog.csdn.net/sr_19930829/article/details/33741015