编写函数,根据起始时间和结束时间,计算用时。

说明:参数 s_hour、s_min 和 s_sec分别为开始时间的时、分和秒数,e_hour、e_min 和 e_sec 分别为结束时间的时、分和秒数,函数值为用时(秒数)。
注:为了便于计算,假设用时不足 1 天。
特别注意,当开始时间晚于结束时间时,需考虑跨天的情况。

基于Monster 组和GPT的调写:

#include <stdio.h>

int time_diff(int s_hour, int s_min, int s_sec, int e_hour, int e_min, int e_sec) {
    int s_total_sec = s_hour * 3600 + s_min * 60 + s_sec;
    int e_total_sec = e_hour * 3600 + e_min * 60 + e_sec;

    if (s_total_sec > e_total_sec) {
        e_total_sec += 86400; // 加一天的秒数
    }

    return e_total_sec - s_total_sec;
}

int main() {
    int s_hour = 10, s_min = 30, s_sec = 0;
    int e_hour = 12, e_min = 45, e_sec = 30;

    int diff = time_diff(s_hour, s_min, s_sec, e_hour, e_min, e_sec);

    printf("Time difference: %d seconds\n", diff);

    return 0;
}


  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    针对问题中需要编写一个函数来计算两个时间之间的用时(以秒为单位)。参数包括开始时间的小时、分钟和秒数以及结束时间的小时、分钟和秒数。如果开始时间晚于结束时间,函数需要考虑跨天的情况。可以按照以下步骤来解决:

    1. 首先根据输入参数,将开始时间和结束时间转换为秒数,这样方便后续的计算。
    int time_to_sec(int hour, int minute, int second)
    {
        int sec = hour*3600 + minute*60 + second;
        return sec;
    }
    
    1. 然后计算两个时间之间的时间差,即结束时间减去开始时间。如果开始时间晚于结束时间,需要考虑跨天的情况,此时结束时间需要加上24个小时再计算差值。
    int time_diff(int shour, int smin, int ssec, int ehour, int emin, int esec)
    {
        int sec1 = time_to_sec(shour, smin, ssec);
        int sec2 = time_to_sec(ehour, emin, esec);
        if (sec2 < sec1) {
            sec2 += 24*3600;
        }
        return sec2 - sec1;
    }
    
    1. 最后返回计算得到的时间差即可。

    完整代码如下:

    #include <stdio.h>
    
    // 将时间转换为秒数
    int time_to_sec(int hour, int minute, int second)
    {
        int sec = hour*3600 + minute*60 + second;
        return sec;
    }
    
    // 计算两个时间之间的时间差(以秒为单位)
    int time_diff(int shour, int smin, int ssec, int ehour, int emin, int esec)
    {
        int sec1 = time_to_sec(shour, smin, ssec);
        int sec2 = time_to_sec(ehour, emin, esec);
        if (sec2 < sec1) {
            sec2 += 24*3600;
        }
        return sec2 - sec1;
    }
    
    int main()
    {
        int shour = 10, smin = 30, ssec = 0;
        int ehour = 11, emin = 10, esec = 15;
        int diff = time_diff(shour, smin, ssec, ehour, emin, esec);
        printf("Time difference: %d seconds\n", diff);
        return 0;
    }
    

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,下面是两种实现方式(c和c++):
以下是C语言的函数实现:

int calc_time(int s_hour, int s_min, int s_sec, int e_hour, int e_min, int e_sec) {
    int start = s_hour * 3600 + s_min * 60 + s_sec; // 开始时间转换为秒数
    int end = e_hour * 3600 + e_min * 60 + e_sec; // 结束时间转换为秒数
    int duration = end - start; // 计算用时
    if (duration < 0) { // 跨天的情况
        duration += 24 * 3600;
    }
    return duration;
}

以下是C++语言的函数实现:

int calc_time(int s_hour, int s_min, int s_sec, int e_hour, int e_min, int e_sec) {
    int start = s_hour * 3600 + s_min * 60 + s_sec; // 开始时间转换为秒数
    int end = e_hour * 3600 + e_min * 60 + e_sec; // 结束时间转换为秒数
    int duration = end - start; // 计算用时
    if (duration < 0) { // 跨天的情况
        duration += 24 * 3600;
    }
    return duration;
}

以下是一个示例程序,用于测试上述函数:

#include <stdio.h>

int calc_time(int s_hour, int s_min, int s_sec, int e_hour, int e_min, int e_sec);

int main() {
    int s_hour, s_min, s_sec, e_hour, e_min, e_sec;
    printf("请输入开始时间(小时 分钟 秒): ");
    scanf("%d%d%d", &s_hour, &s_min, &s_sec);
    printf("请输入结束时间(小时 分钟 秒): ");
    scanf("%d%d%d", &e_hour, &e_min, &e_sec);
    int duration = calc_time(s_hour, s_min, s_sec, e_hour, e_min, e_sec);
    printf("用时为%d秒\n", duration);
    return 0;
}

int calc_time(int s_hour, int s_min, int s_sec, int e_hour, int e_min, int e_sec) {
    int start = s_hour * 3600 + s_min * 60 + s_sec; // 开始时间转换为秒数
    int end = e_hour * 3600 + e_min * 60 + e_sec; // 结束时间转换为秒数
    int duration = end - start; // 计算用时
    if (duration < 0) { // 跨天的情况
        duration += 24 * 3600;
    }
    return duration;
}

运行结果示例:

请输入开始时间(小时 分钟 秒): 22 30 15
请输入结束时间(小时 分钟 秒): 2 45 50
用时为35855

代码解释:

  1. 在主函数中,使用scanf函数获取用户输入的开始时间和结束时间。
  2. 调用calc_time函数计算用时,并将结果保存在duration变量中。
  3. 输出计算结果。

calc_time函数中,首先将开始时间和结束时间转换为秒数,然后计算用时。如果用时小于0,说明跨天了,需要加上一天的秒数(24小时 * 3600秒)。最后返回计算结果。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢