202306-时间规划(luogu-B3838)

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


题目分析

这道题目主要考察时间差的计算。需要注意以下几点:

  1. 输入数据包含四个整数:

    • 开始时刻的小时(0-23)
    • 开始时刻的分钟(0-59)
    • 结束时刻的小时(0-23)
    • 结束时刻的分钟(0-59)
  2. 计算思路:

    • 将时间全部转换为分钟
    • 开始时刻分钟数 = 小时数 × 60 + 分钟数
    • 结束时刻分钟数 = 小时数 × 60 + 分钟数
    • 两个时刻的差值即为所求的分钟数

示例代码

#include <iostream>
using namespace std;
int main() {
    // 定义变量存储开始时刻和结束时刻的小时、分钟
    int hour, minute, hour2, minute2;
    
    // 依次读入开始时刻的小时、分钟,结束时刻的小时、分钟
    cin >> hour >> minute >> hour2 >> minute2;
    
    // 计算时间差:将两个时刻都转换为分钟数,然后相减
    // 开始时刻总分钟数 = hour * 60 + minute
    // 结束时刻总分钟数 = hour2 * 60 + minute2
    // 时间差 = 结束时刻总分钟数 - 开始时刻总分钟数
    cout << (hour2 * 60 + minute2) - (hour * 60 + minute);
    
    return 0;
}

附一个孩子的解题思路,稍微绕了一点,但好在是自己想的:

#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

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on