还是我,我又来请教问题了

【问题描述】

   为了备战游泳比赛,小张在拼命训练以获取好的名次。某天小张对自己的游泳训练时间进行了计时(计时按24小时制),分别记录了自己当天开始训练的时间ab分c秒和结束训练的时间d时e分f秒。请计算出小张当天总的游泳训练时间。

【输入形式】

   游泳训练的开始时间和结束时间,开始与结束时间之间以空格作为间隔,时间格式均为“时:分:秒”。

【输出形式】

   总的训练时间,格式为“时:分:秒”,其中分秒不足两位的左补0。
int main()
{
    int a,b,c,d,e,f;
    int p,q,u;
    scanf("%d:%d:%d",&a,&b,&c);
    scanf("%d:%d:%d",&d,&e,&f);
    p=d-a;
    q=e-b;
    u=f-c;
    printf("%d:%02d:%02d",p,q,u);
    
    
    
    
    
    
    return 0;
}

错在哪里啊

哪有那么简单啊,如果e<b呢?岂不是出现负数了么?

只能说,你想得太简单了

#include <stdio.h>

int main()
{
    int a, b, c, d, e, f;
    int p, q, u;
    int start, end, temp; 
    scanf("%d:%d:%d %d:%d:%d", &a, &b, &c, &d, &e, &f);
    start = a*60*60 + b*60 + c;
    end = d*60*60 + e*60 + f;
    temp = end - start;
    
    p = temp / 3600;       // 小时差值 
    q = temp / 60 % 60 ; // 分钟差值 
    u = temp % 60;       // 秒差值 
    printf("%d:%02d:%02d", p, q, u);
    return 0;
}