用C/c++实现出一段代码

小蓝将自己的车停在路边,在同一天将车开走。给定停车时间和开走时间,请问小蓝停了多长时间?
输入格式
  输入两行,第一行包含停车时间,第二行包含开走时间。
  每个时间的格式为 HH:MM:SS,其中 HH 表示时,值为 0 到 23 的整数,如果小于 10 用 0 补齐两位;MM 和 SS 分别表示分和秒,值为 0 到 59 的整数,小于 10 时用 0 补齐两位。
输出格式
  输出总共停车的时间,格式为 HH:MM:SS。
样例输入
08:58:10
17:20:31
样例输出
08:22:21

先用秒相减,如果为负数,+60,然后,第二个时间的分钟-1,然后计算分钟,计算方式同秒,然后是时。

img

代码:

#include <stdio.h>
int main()
{
    int h1,m1,s1,h2,m2,s2;
    int hh,mm,ss;
    scanf("%d:%d:%d",&h1,&m1,&s1);
    scanf("%d:%d:%d",&h2,&m2,&s2);
    ss = s2 - s1;
    if(ss<0)
    {
        ss += 60;
        m2 -=1; //分钟数-1
    }
    mm = m2 - m1;
    if(mm<0)
    {
        mm += 60;
        h2 -=1; //小时-1
    }
    hh = h2-h1;
    printf("%02d:%02d:%02d",hh,mm,ss);
    return 0;
}

把样例输出的 数据 全部转换成秒。
然后相减。
再全部转换成时间。

#include<stdio.h>
#include<string.h>
using namespace std;
int main() {
    int hh1, mm1, ss1;
    int hh2, mm2, ss2;
    int time1 = 0;
    int time2 = 0;
    int time3 = 0;
    scanf("%d:%d:%d", &hh1, &mm1, &ss1);
    scanf("%d:%d:%d", &hh2, &mm2, &ss2);
    time1 = hh1 * 3600 + mm1 * 60 + ss1;
    time2 = hh2 * 3600 + mm2 * 60 + ss2;
    time3 = time2 - time1;
    printf("%02d:%02d:%02d", time3 / 3600, (time3 % 3600) / 60, ((time3 % 3600) % 60));
}

img