題目連結: 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; | |
} |