现在给出一天内的两个时刻,时间间隔是时刻1与时刻2差的绝对值,时刻用时,分和秒表示。

描述

现在给出一天内的两个时刻,时间间隔是时刻1与时刻2差的绝对值,时刻用时,分和秒表示。

输入n条时刻1和时刻2,统计并独立输出每个时间间隔,单位为秒。

输入格式

第一行输入整数n,之后输入n行,每行输入6个整数: h1, ml,s1, h2, m2和s2,其中时刻1的时为h1,分为ml,秒为s1,时刻2的时为h2,分为m2,秒为s2。

输入数据保证: 1<=n<=1000, 0<=h1, h2<24, 0<=ml, m2, s1, s2<60,

输出格式

每行输出时间间隔,单位为秒。


#include <stdio.h>
typedef struct {
    int hour;
    int min;
    int sec;
}Time;
/**
 * 计算时间差
 * @param time1 
 * @param time2 
 * @return 时间结构体
 */
Time TimeDifference(Time time1,Time time2)
{
    Time dtime;
    int int_1=0,int_2=0,result=0;
    //将时间都转化为秒进行计算
    int_1=(time1.hour*60+time1.min)*60+time1.sec;
    int_2=(time2.hour*60+time2.min)*60+time2.sec;
    result=(int_1>=int_2)?(int_1-int_2):(int_2-int_1);
    dtime.hour=result/3600;
    dtime.min=(result-dtime.hour*3600)/60;
    dtime.sec=result-dtime.hour*3600-dtime.min*60;
    return dtime;
}
int main() {
    Time time[3];
    for (int i = 0; i < 2; ++i) {
        printf("请输入时刻%d(hour:min:sec):",i+1);
        scanf("%d:%d:%d",&time[i].hour,&time[i].min,&time[i].sec);
        fflush(stdin);
    }
    time[2]= TimeDifference(time[0],time[1]);
    printf("时刻差为:%d时%d分%d秒",time[2].hour,time[2].min,time[2].sec);
     return 0;
}

都转换成秒数相减就可以了。代码如下:

#include <stdio.h>
int main()
{
    int i,n;
    int h1,m1,s1,h2,m2,s2;
    int t1,t2;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %d %d %d %d %d",&h1,&m1,&s1,&h2,&m2,&s2);
        t1 = h1 * 3600 + m1 * 60 + s1;
        t2 = h2 * 3600 + m2 * 60 + s2;
        if(t1 < t2)
            printf("%d\n",t2-t1);
        else
            printf("%d\n",t1-t2);
    }
    return 0;
}

综合1楼的,他还漏了一些,改一下就好啦。题主说“输入数据保证: 1<=n<=1000, 0<=h1, h2<24, 0<=ml, m2, s1, s2<60”,那就改一下scanf部分,只读他们这些范围的就好啦例如,n的,if(1<=n<=1000)给加到那句scanf前

C语言计算两个时刻的时间差
可以借鉴下

#include <stdio.h>
 
typedef struct {
    int hour;
    int min;
    int sec;
}Time;
 
/**
 * 计算时间差
 * @param time1 
 * @param time2 
 * @return 时间结构体
 */
Time TimeDifference(Time time1,Time time2)
{
    Time dtime;
    int int_1=0,int_2=0,result=0;
    //将时间都转化为秒进行计算
    int_1=(time1.hour*60+time1.min)*60+time1.sec;
    int_2=(time2.hour*60+time2.min)*60+time2.sec;
    result=(int_1>=int_2)?(int_1-int_2):(int_2-int_1);
    dtime.hour=result/3600;
    dtime.min=(result-dtime.hour*3600)/60;
    dtime.sec=result-dtime.hour*3600-dtime.min*60;
    return dtime;
}
 
int main() {
    Time time[3];
    for (int i = 0; i < 2; ++i) {
        printf("请输入时刻%d(hour:min:sec):",i+1);
        scanf("%d:%d:%d",&time[i].hour,&time[i].min,&time[i].sec);
        fflush(stdin);
    }
    time[2]= TimeDifference(time[0],time[1]);
    printf("时刻差为:%d时%d分%d秒",time[2].hour,time[2].min,time[2].sec);
     return 0;
}

c语言的 time(&t) 函数可以直接返回时间参数的秒数形式,两个时刻直接减就是他们之间的时间间隔