蓝桥杯每日真题 - 第15天

news/2024/11/19 7:26:34/

题目:(钟表)

题目描述(13届 C&C++ B组B题)

解题思路:

  1. 理解钟表指针的运动

    • 秒针每分钟转一圈,即每秒转6度。

    • 分针每小时转一圈,即每分钟转6度。

    • 时针每12小时转一圈,即每分钟转0.5度。

  2. 计算角度

    • 秒针的角度 S=6m(其中 m 是秒)。

    • 分针的角度 M=6f+0.1m(其中 f 是分)。

    • 时针的角度 H=30s+0.5f+0.0083m(其中 s 是小时)。

  3. 计算夹角

    • 分针和时针的夹角 A=∣H−M∣。

    • 分针和秒针的夹角 B=∣M−S∣。

  4. 条件判断

    • 需要满足 A=2B。

  5. 遍历时间

    • 从 s=0 到 s=6,ff 从 0 到 59,mm 从 0 到 59,检查每个时间点是否满足条件。

代码实现(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度,并加上分针和秒针带来的变化// 计算时针与分针的夹角 AA = (H > M) ? (H - M) : (M - H);if (A > 180) A = 360 - A; // 确保 A 在 [0, 180] 范围内// 计算分针与秒针的夹角 BB = (S > M) ? (S - M) : (M - S);if (B > 180) B = 360 - B; // 确保 B 在 [0, 180] 范围内// 判断是否满足 A = 2Bif (A == 2 * B){// 找到答案后直接跳出循环break;}}// 输出时、分、秒printf("%d %d %d\n", h, m, s);return 0;
}

得到运行结果:

代码分析: 

变量说明

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

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

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

角度计算

  • 秒针的角度[ S = s \times 6.0 ]。秒针每秒钟走 6 度。

  • 分针的角度[ M = (m + \frac{s}{60.0}) \times 6.0 ]。分针每分钟走 6 度,且秒针的细微变化会影响分针的位置。

  • 时针的角度[ H = (h + \frac{m}{60.0} + \frac{s}{3600.0}) \times 30.0 ]。时针每小时走 30 度,同时分针和秒针也会微调时针的位置。

夹角计算

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

  • 时针与分针夹角 A
    [ A = (H > M) ? (H - M) : (M - H); ]
    [ \text{if } A > 180 \text{ then } A = 360 - A; ]

  • 分针与秒针夹角 B
    [ B = (S > M) ? (S - M) : (M - S); ]
    [ \text{if } B > 180 \text{ then } B = 360 - B; ]

判断条件

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

循环终止

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

难度分析

⭐️⭐️⭐️

总结

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


http://www.ppmy.cn/news/1548183.html

相关文章

C++ 模板进阶:探索更强大的编程技巧

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 如果你对C 模板编程还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f525;&#x1f525;&#x1f525;C 模板…

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式&#xff1f; 建造者模式是一种创建型设计模式&#xff0c;它用于一步步地构建一个复杂对象&#xff0c;同时将对象的构建过程与它的表示分离开。简单来说&#xff1a; 它将复杂对象的“建造步骤”分成多部分&#xff0c;让我们可以灵活地控制这些步骤。通过…

Signoz 和 Jaeger

Signoz 和 Jaeger 是两款流行的分布式追踪系统&#xff0c;它们都旨在帮助开发者和运维人员理解和优化分布式系统的性能。下面是 Signoz 和 Jaeger 的一些主要特性和对比&#xff1a; 1. 项目背景 Jaeger 开源时间&#xff1a;Jaeger 是由 Uber 开源的&#xff0c;最初发布于…

在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】

在Qt&#xff08;以及C&#xff09;中&#xff0c;& 和 * 是两个至关重要的符号&#xff0c;它们用于处理引用和指针。我们将逐个解释这两个符号&#xff0c;并提供简单示例来说明它们的用法。 1. 引用&#xff08;&&#xff09; 定义: 引用是一种别名&#xff0c;它不…

Qt ini文命名分析和命名规范实例

在 Qt 中使用 QSettings 保存到 .ini 文件时&#xff0c;键名的格式设计非常重要&#xff0c;既要清晰又要适应扩展性需求。以下是一些键名格式建议和设计规则&#xff1a; 1. 键名的基本设计规则 分层结构&#xff08;分组&#xff09; 使用 / 或 . 表示分层结构&#xff0c;便…

scikit-learn学习Day30

1.数据集划分 import numpy as np from sklearn.datasets import load_iris import pandas as pd arr load_iris() data arr.data target arr.target print(target) n_target target.reshape(len(target),1) print(n_target) n_data np.hstack([data,n_target]) print(n_…

python+Django+MySQL+echarts+bootstrap制作的教学质量评价系统,包括学生、老师、管理员三种角色

项目介绍 该教学质量评价系统基于Python、Django、MySQL、ECharts和Bootstrap技术&#xff0c;旨在为学校或教育机构提供一个全面的教学质量评估平台。系统主要包括三种角色&#xff1a;学生、老师和管理员&#xff0c;每个角色有不同的功能权限。 学生角色&#xff1a;学生可…

BLE 蓝牙客户端和服务器连接

蓝牙通信在设计小型智能设备时非常普遍&#xff0c;之前一直没有使用过&#xff0c;最近使用ardunio ESP32 做了一些实验&#xff0c;做了一个收听播客的智能旋钮&#xff08;Smart Knob&#xff09;&#xff0c;它带有一个旋转编码器和两个按键。 本文介绍BLE 服务器Server和W…