根据起始时间和流逝时间求出终止时间

要根据给出的时间和流失的分钟数算出最后的时间,为啥这样子的结果是部分正确哇?需要怎么改嘞

#include<stdio.h>

int main()
{
int a,b,h,m,sum,final;
scanf("%04d %d",&a,&b);
h=a/100;//小时数
m=a%100;//分钟数
sum=h*60+m;//总分钟数
final=sum+b;//终止时间的分钟数
printf("%0d%0d",final/60,final%60);
return 0;
}

#include<stdio.h>
int main() {
    int a,b,c,d,f,s;
    scanf("%d %d", &a,&d );
    b=a/100;
    c=a%100;
    s=d/60;
    f=d%60;
    c+=f;
    if (c>=60) {
        c=c-60;
        b=b+1;
    }
    if (c<0) {
        c=c+60;
        b=b-1;
    }
    b+=s;
    printf("%d%02d",b,c);
    return 0;
}