【GESP】C++一级真题练习(202306)luogu-B3838,时间规划
GESP一级真题练习。为2023年6月一级认证真题。时间差计算问题。
luogu-B3838
题目要求
描述
小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?
输入
输入 4 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 24 小时制,即小时在 0 到 23 之间,分钟在 0 到 59 之间。
输出
输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。
输入样例-1
9
5
9
6
输出样例-1
1
输入样例-2
9
5
10
0
输出样例-2
55
题目分析
这道题目主要考察时间差的计算。需要注意以下几点:
- 输入数据包含四个整数:
- 开始时刻的小时(0-23)
- 开始时刻的分钟(0-59)
- 结束时刻的小时(0-23)
- 结束时刻的分钟(0-59)
- 计算思路:
- 将时间全部转换为分钟
- 开始时刻分钟数 = 小时数 × 60 + 分钟数
- 结束时刻分钟数 = 小时数 × 60 + 分钟数
- 两个时刻的差值即为所求的分钟数
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
int main() {
int hour, minute, hour2, minute2;
cin >> hour >> minute >> hour2 >> minute2;
cout << (hour2 * 60 + minute2) - (hour * 60 + minute);
return 0;
}
附一个孩子的解题思路,稍微绕了一点,但好在是自己想的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main() {
// 定义变量存储开始和结束时刻的小时、分钟
int hour, minute, hour2, minute2;
// 读入开始时刻和结束时刻
cin >> hour >> minute >> hour2 >> minute2;
// 如果结束时刻的分钟数小于开始时刻的分钟数
// 需要向小时借位,即结束时刻减1小时,分钟数加60
if (minute2 < minute) {
hour2 -= 1; // 小时数减1
minute2 += 60; // 分钟数加60
}
// 计算小时差
int i = hour2 - hour;
// 输出总分钟数 = 小时差×60 + 分钟差
cout << i * 60 + (minute2 - minute);
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权