上一篇钟表答案

代码实现(C语言):
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int h = 0, m = 0, s = 0; // 时、分、秒
    double A, B, H, M, S;    // A、B 表示题目中的夹角,H、M、S 表示时针、分针、秒针的度数
 
    while (h < 6) // 时针只需遍历 0~6
    {
        s++; // 秒针每秒加一
        if (s == 60) // 秒针转一圈
        {
            s = 0;
            m++;
        }
        if (m == 60) // 分针转一圈
        {
            m = 0;
            h++;
        }
 
        // 计算秒针、分针、时针当前的位置(以度数为单位)
        S = s * 6.0;                           // 秒针每秒走6度
        M = (m + s / 60.0) * 6.0;              // 分针每分钟走6度,并加上秒针带来的细微变化
        H = (h + m / 60.0 + s / 3600.0) * 30.0; // 时针每小时走30度,并加上分针和秒针带来的变化
 
        // 计算时针与分针的夹角 A
        A = (H > M) ? (H - M) : (M - H);
        if (A > 180) A = 360 - A; // 确保 A 在 [0, 180] 范围内
 
        // 计算分针与秒针的夹角 B
        B = (S > M) ? (S - M) : (M - S);
        if (B > 180) B = 360 - B; // 确保 B 在 [0, 180] 范围内
 
        // 判断是否满足 A = 2B
        if (A == 2 * B)
        {
            // 找到答案后直接跳出循环
            break;
        }
    }
 
    // 输出时、分、秒
    printf("%d %d %d\n", h, m, s);
    return 0;
}
得到运行结果:


代码分析: 
变量说明

h, m, s:分别表示小时、分钟、秒的整数值。

H, M, S:分别表示时针、分针、秒针所指向的具体角度(度数)。

A, B:分别表示时针与分针的夹角、分针与秒针的夹角。

角度计算

秒针的角度:。秒针每秒钟走 6 度。

分针的角度:。分针每分钟走 6 度,且秒针的细微变化会影响分针的位置。

时针的角度:。时针每小时走 30 度,同时分针和秒针也会微调时针的位置。

夹角计算

两个指针的夹角:是大角减小角,如果夹角大于 180 度,取补角。

时针与分针夹角 A:

分针与秒针夹角 B:

判断条件

只需判断是否满足 ( A = 2B )。

循环终止

当找到符合条件的时、分、秒时,用 break 终止循环,输出结果即可。

难度分析
⭐️⭐️⭐️

总结
这段代码通过模拟时钟的运行,计算出在一天中的某个时刻,时针和分针的夹角是分针和秒针夹角的两倍。这个问题考察了对时间的理解和指针运动的计算,以及如何将这些计算转化为代码实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值