九度 1553:时钟(模拟题)

题目描述:

如图,给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。

九度 1553:时钟(模拟题)

 

输入:

输入包含多组测试数据,每组测试数据由一个按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;

    else

        dis = 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;

}

 

你可能感兴趣的:(模拟)