[ACM] 九度OJ 1553 时钟
- 题目描写叙述:
 - 
如图,给定随意时刻,求时针和分针的夹角(劣弧所相应的角)。

 
- 输入:
 - 
输入包括多组測试数据。每组測试数据由一个按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;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
                    
                
                
            
        
浙公网安备 33010602011771号