使用c++ 写出此代码 Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少。现在xhd知道的只有时间,请你帮他算出这个夹角。 注:夹角的范围[0,180],时针和分针的转动是连续而不是离散的。 Input 输入数据的第一行是一个数据T,表示有T组数据。 每组数据有三个整数h(0 <= h < 24),m(0 <= m < 60),s(0 <= s < 60)分别表示时、分、秒。 Output 对于每组输入数据,输出夹角的大小的整数部分。 Sample Input 2 8 3 17 5 13 30 Sample Output 138 75
时间: 2024-02-25 09:57:18 浏览: 366
以下是使用C++编写的解题代码:
```cpp
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
int t;
scanf("%d", &t);
while (t--) {
int h, m, s;
scanf("%d%d%d", &h, &m, &s);
double h_angle = h * 30.0 + m * 0.5 + s * 0.00833; // 计算时针角度
double m_angle = m * 6.0 + s * 0.1; // 计算分针角度
double angle = abs(h_angle - m_angle); // 计算夹角
if (angle > 180) angle = 360 - angle; // 如果夹角大于180度,取其补角
printf("%d\n", (int)angle); // 输出夹角整数部分
}
return 0;
}
```
首先读入数据组数t,然后使用while循环读入每组数据。对于每组数据,我们根据题目给出的公式计算时针和分针的角度,然后计算它们的夹角。由于夹角的范围是[0, 180]度,因此如果计算出来的夹角大于180度,我们需要将其取其补角,即用360度减去夹角。最后输出夹角的整数部分即可。注意,题目要求输出的是夹角整数部分,因此需要将计算出来的夹角强制转换为int类型。
阅读全文