用 C++ 查找时针和分针之间的夹角为给定值 theta 的相关时间


假设我们有一个 theta,或角度值。我们必须查找 hh:mm 格式的时间,它通过时针和分针之间的夹角来创建。假设角度为 90°,则结果可以为 3:00。

由于有 12 小时,因此对于小时有 12 个可能的值,对于分钟有 60 个可能的值。我们将循环浏览所有可能的时间。如果任何时间的角度与给定的 theta 相同,则打印该时间。

示例

 在线演示

#include<iostream>
#include<cmath>
using namespace std;
float angleFromClockHand(int hour, int minute) {
   float hour_angle = 0.5 * (hour*60 + minute);
   float minute_angle = 6*minute;
   float angle = abs(hour_angle - minute_angle);
   angle = min(360-angle, angle);
   return angle;
}
void findTime(float theta) {
   for (int hour=0; hour<12; hour++) {
      for (int min=0; min<60; min++) {
         if (angleFromClockHand(hour, min)==theta) {
            cout << hour << ":"<< min;
            return;
         }
      }
   }
   cout << "Unable to find time";
}
int main() {
   float angle = 45.0;
   findTime(angle);
}

输出

4:30

更新于: 18-12-2019

104 人浏览

开始你的 职业

通过完成本课程获得认证

开始学习
广告
© . All rights reserved.