卡在这好久,不知道出了啥问题,看看吧qaq

img

img
我感觉没啥问题啊
#include <stdio.h>
int main(){
int time,minute;
scanf("%d %d",&time,&minute);

int h1=time/100;
int m1;
if(time<60){m1 =time;
}else{
m1 =time%100;}

while(minute<0){minute+=60;h1--
;}
int h2=minute/60;
int m2=minute%60;
int m= m1 +m2;
int h=h1+h2;
if(m>59){
    h++;m-=60;
}

    printf("%d%d",h,m);
return 0;

}

你错的原因是这里m=60的情况会输出0,
比如 输入520 40 输出应该600
但是你直接减60 输出的是60。

if(m>59){
    h++;m-=60;
}

给你改好了:

#include <stdio.h>
int main()
{
    int time,minute,flag=0;
    scanf("%d %d",&time,&minute);

    int h1=time/100;
    int m1;
    if(time<60)
    {
        m1 =time;
    }
    else
    {
        m1 =time%100;
    }

    while(minute<0)
    {
        minute+=60;
        h1--;
    }
    int h2=minute/60;
    int m2=minute%60;
    int m= m1 +m2;
    int h=h1+h2;
    if(m>59)
    {
        h++;
        m-=60;
        if(m==0)
            flag=1;
    }

    if(flag)
    printf("%d0%d",h,m);
    else
    printf("%d%d",h,m);
    return 0;
}
//520 40

img

将第一个值转成分钟数,然后加上第二个值,将结果再转成小时+分钟形式
你现在的处理太过于复杂了,没必要

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    int h = a/100;
    int m = a%100;
    m += h*60 + b;
    if(m < 0)
        m += 1440;
    h = m/60;
    m -= h*60;
    m = h*100+m;
    printf("%d\n",m);
}