【GESP】C++一级练习 luogu-P1425, 小鱼的游泳时间
GESP一级综合练习,主要涉及时间计算,难度★☆☆☆☆。
luogu-P1425
题目要求
题目描述
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 $24$ 小时制计算),它发现自己从 $a$ 时 $b$ 分一直游泳到当天的 $c$ 时 $d$ 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
小鱼游的好辛苦呀,你可不要算错了哦。
输入格式
一行内输入四个整数,以空格隔开,分别表示题目中的 $a, b, c, d$。
输出格式
一行内输出两个整数 $e$ 和 $f$,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 $f$ 应该小于 $60$。
样例输入 #1
1
12 50 19 10
样例输出 #1
1
6 20
提示
对于全部测试数据,$0\le a,c \le 24$,$0\le b,d \le 60$,且结束时间一定晚于开始时间。
题目分析
在本题中,我们需要计算小鱼游泳的总时间。首先,我们从输入中读取开始时间(小时和分钟)以及结束时间(小时和分钟)。接着,我们需要判断结束时间的分钟是否小于开始时间的分钟。如果是这种情况,意味着结束时间的小时数需要减去1,并且结束分钟需要加上60,以便进行正确的计算。最后,我们将计算出的小时和分钟输出。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
int main() {
int a, b, c, d; // 定义四个整数变量,分别表示开始时间的小时和分钟,以及结束时间的小时和分钟
scanf("%d%d%d%d", &a, &b, &c, &d); // 从标准输入读取四个整数
// 判断结束分钟是否小于开始分钟
if (d < b) {
// 如果结束分钟小于开始分钟,小时数需要减去1,分钟数需要加上60
printf("%d %d", c - 1 - a, d + 60 - b); // 输出总小时和总分钟
} else {
// 如果结束分钟大于或等于开始分钟,直接计算小时和分钟
printf("%d %d", c - a, d - b); // 输出总小时和总分钟
}
return 0; // 程序结束
}
另外一种解题思路是,根据分钟数来计算。首先,我们可以将开始时间和结束时间都转换为总分钟数。然后,通过计算结束时间的总分钟数减去开始时间的总分钟数,得到经过的总分钟数。最后,将总分钟数转换为小时和分钟进行输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdio>
using namespace std;
int main() {
int a, b, c, d; // 定义四个整数变量,分别表示开始时间的小时(a)和分钟(b),以及结束时间的小时(c)和分钟(d)
// 从标准输入读取四个整数,表示开始和结束的时间
scanf("%d%d%d%d", &a, &b, &c, &d);
// 将开始时间转换为总分钟数
int start_m = a * 60 + b;
// 将结束时间转换为总分钟数
int end_m = c * 60 + d;
// 计算总共经过的分钟数
int cost_m = end_m - start_m;
// 计算经过的小时数
int cost_time_h = cost_m / 60;
// 计算经过的分钟数
int cost_time_m = cost_m % 60;
// 输出经过的小时和分钟
printf("%d %d", cost_time_h, cost_time_m);
return 0; // 程序结束
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权