小明的游泳时间

分析问题

小明从开始时间(ab 分)游泳到结束时间(cd 分),我们需要计算他总共游了多少小时和多少分钟。时间是24小时制,并且结束时间不会早于开始时间(因为是当天的活动)。为了便于五年级学生理解,我们可以把时间想象成“积木”:

  1. 时间单位转换:就像把小时换算成分钟一样。我们知道1小时 = 60分钟,所以:
  • 开始时间总共的分钟数 = a × 60 + b
  • 结束时间总共的分钟数 = c × 60 + d
  • 游泳的总分钟数 = 结束分钟数 – 开始分钟数(因为结束时间更晚,所以结果不会是负数)

2.分钟转小时和分钟:总分钟数可能很多,我们需要把它分成“整小时”和“剩余分钟”。例如:

    • 总分钟数 ÷ 60 = 小时数(取整数部分)
    • 总分钟数 % 60 = 分钟数(取余数部分,所以分钟数一定小于60)

    建立模型

    我们可以用简单的数学公式表示:

    • 总分钟差 = (c × 60 + d) - (a × 60 + b)
    • 游泳小时数 e = 总分钟差 ÷ 60(整数除法)
    • 游泳分钟数 f = 总分钟差 % 60(取余数)

    例如,输入 12 50 19 10

    • 开始分钟:12 × 60 + 50 = 770 分钟
    • 结束分钟:19 × 60 + 10 = 1150 分钟
    • 总分钟差:1150 - 770 = 380 分钟
    • 小时数:380 ÷ 60 = 6(因为 60 × 6 = 360)
    • 分钟数:380 % 60 = 20(因为 380 – 360 = 20)
    • 输出:6 20

    编写程序

    下面是C++程序实现上述模型。程序会读取输入的四个整数,计算游泳时间,并输出结果。

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        // 输入开始时间的小时a、分钟b和结束时间的小时c、分钟d
        int a, b, c, d;
        cin >> a >> b >> c >> d;
        // 计算开始时间和结束时间的总分钟数
        int start_minutes = a * 60 + b;
        int end_minutes = c * 60 + d;
        // 计算总分钟差(游泳总分钟)
        int total_diff = end_minutes - start_minutes;
        // 计算小时数(整数除法)和分钟数(取余)
        int e = total_diff / 60;  // 小时
        int f = total_diff % 60;  // 分钟(一定小于60)
        // 输出结果,e和f用空格隔开
        cout << e << " " << f << endl;
        return 0;
    }

    保存 编译 运行

    程序说明

    1. 输入:程序读取四个整数 a, b, c, d,分别表示开始小时、开始分钟、结束小时和结束分钟。
    2. 计算总分钟
    • start_minutes = a * 60 + b:把开始时间转换成分钟。
    • end_minutes = c * 60 + d:把结束时间转换成分钟。
    1. 计算时间差total_diff = end_minutes - start_minutes,得到游泳的总分钟数。
    2. 转换小时和分钟
    • e = total_diff / 60:总分钟除以60,得到小时数(整数部分)。
    • f = total_diff % 60:总分钟除以60的余数,得到分钟数(保证小于60)。
    1. 输出:按格式输出 ef

    测试样例

    输入 12 50 19 10 时,程序输出 6 20,符合题目要求。你可以用其他时间测试,如:

    • 输入 10 30 11 20:输出 0 50(50分钟)。
    • 输入 9 0 10 0:输出 1 0(1小时整)。