- 题目描述:
如图,给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。
- 输入:
输入包含多组测试数据,每组测试数据由一个按hh:mm表示的时刻组成。
- 输出:
对于每组测试数据,输出一个浮点数,代表时针和分针的夹角(劣弧对应的角),用角度表示,结果保留两位小数。
- 样例输入:
03:00 14:45
- 样例输出:
90.00 172.50
总结:
1. 不要忘了, 分针的角度可以由分直接转换, 而时针则需要考虑分
代码:
#include <iostream> #include <stdio.h> #include <math.h> #include <cstdlib> #include <cstring> using namespace std;char time1[20];double timeToDegree(char *time) {int hour = 0, mini = 0;for(int i = 0; i < 2; i ++) {hour *= 10;mini *= 10;hour += time[0+i] - '0';mini += time[3+i] - '0';}hour %= 12;double degree1 = hour*360.0/12;double degree2 = mini*360.0/60;degree1 += (360.0/12)*mini/60;double dis = 0.0;if(degree1 > degree2)dis = degree1 - degree2;elsedis = degree2 - degree1;if(dis > 180.0) {dis = 180 - (dis-180);//dis = 360.0-max(degree1, degree2) + min(degree1, degree2); }return dis; }int main() {while(scanf("%s", time1) != EOF) {double degree1 = timeToDegree(time1);double dis = timeToDegree(time1);printf("%0.2f\n", dis);}return 0; }