C语言pta《7-14然后是几点 》习题疑惑

习题提交之后一直没给到满分,但是不知道问题出在哪?求解答,十分感谢!

img

题目:
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:1120 110
输出样例:1310

#include 

int main()
{
    int t1,t2,t3,h1,h2,h3,m1,m2,m3;
    
    scanf("%d %d",&t1,&t2);
    
    h1 = t1 / 100;
    m1 = t1 % 100;
    
    if(t2 >= 0){
        h2 = t2 / 60;
        m2 = t2 % 60;
        m3 = m1 + m2;
        if(m3 >= 60){
            m3 = m3 -60;
            h1 = h1 +1;
        }
        h3 = h1 + h2;
    }
    
    if(t2 < 0){
        t2 = t2 * -1;
        h2 = t2 / 60;
        m2 = t2 % 60;
        m3 = m1 - m2;
        if(m3 < 0){
            m3 = m3 + 60;
            h1 = h1 - 1;
        } 
        h3 = h1 - h2; 
        if(m3 >= 0){
            h3 = h1 - h2;
        }
    }
    
    t3 = h3 * 100 + m3;            
    
    printf("%d",t3);    

    return 0;
}

供参考:

#include <stdio.h>
int main()
{
    int t1,t2,t3;
    scanf("%d %d",&t1,&t2);
    t1=t1/100*60+(t1%100);//t1转换成分钟数
    t3=t1+t2;//总分钟数
    printf("%d%d%d",t3/60,t3%60/10,t3%60%10);//取余60就是取出分钟数
    return 0;
}


#include <stdio.h>

int main(){
    int start,increment;
    scanf("%d %d",&start,&increment);

        //24进制加法
    int minutes,hours;
    minutes = (start % 100 + increment) % 60;
    hours =( (start / 100) + ( start % 100 + increment ) / 60 ) % 24; 
    //对出现负数的结果调整格式
    if(minutes<0){
        minutes = minutes + 60;
        hours = hours - 1;
        if(hours < 0)
            hours = hours + 24;
    }
    printf("%01d%02d",hours,minutes);
    return 0;
}