題目連結: https://zerojudge.tw/ShowProblem?problemid=d095

# 解題思路

角度 = 時 ×30° - 分 × 6° + 分 * 0.5°
需要判別一下,不同角度下的狀況,

  • 大於 180,就必須用 360 去減,使其低於 180
  • 小於 - 180,就必須加上 360 (同界角),使其角度為正 (已確定會小於 180)
  • 小於 0 卻沒小於 - 180,則變成 360 -(360 + 角度)=> - 角度
  • 其他的就直接輸出就好

# 程式碼

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main()
{
    char a;
    float h,m,ang;
    while(cin>>h>>a>>m&&!(h==0&&m==0))
    {
        ang=h*30-m*6+m/2;
        if(ang>=180)
            cout<<fixed<<setprecision(3)<<360-ang;
        else if(ang<-180)
            cout<<fixed<<setprecision(3)<<ang+360;
        else if (ang<0)
            cout<<fixed<<setprecision(3)<<-ang;
        else
            cout<<fixed<<setprecision(3)<<ang;
        cout<<endl;
    }
    return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay