定义结构体类型,计算输入的两个时刻的秒数差

样例输入 5:13:20 5:18:21
样例输出 301seconds

img

#include<stdio.h>
#include<math.h>
 
 
struct clock//定义时间结构体,成员为时、分、秒
{
    int hour,minute,second;
};
 
struct clock sub(struct clock *p1, struct clock *p2)//结构体函数
{
    struct clock t;//创建一个结构体变量
    int s1,s2;//总秒数
    int st;//相差的秒数
 
    s1 = (p1 -> hour) * 60 * 60 + (p1 -> minute) * 60 + (p1 -> second); //计算总共的秒数
    s2 = (p2 -> hour) * 60 * 60 + (p2 -> minute) * 60 + (p2 -> second);
    st = abs(s1 - s2);//计算相差的秒数
 
    t.hour = st / (60 * 60);//计算小时
    st %= (60 * 60);//计算除去小时外的秒数
    t.minute = st / 60;//计算分钟
    st %= 60;//计算除去分钟外的秒数
    t.second = st;
 
    return t;//返回改变后的结构体
};
 
int main()
{
    struct clock clock1,clock2,clock3;
 
    scanf("%d:%d:%d",&clock1.hour,&clock1.minute,&clock1.second);//输入时刻1
    scanf("%d:%d:%d",&clock2.hour,&clock2.minute,&clock2.second);//输入时刻2
    clock3=sub(&clock1, &clock2);//调用函数计算时差
    printf("%dseconds", clock3.hour*3600+ clock3.minute*60+ clock3.second);//打印时差
    return 0;
}