原始代码:
#include<stdio.h>
struct shi{
int h,m,s;
};
int main()
{
struct shi a,b;
int n;
scanf("%d",&n);
scanf("%d%d%d",&a.h ,&a.m ,&a.s );
if(n + a.s <60){
a.s = a.s+n;
}
else {
if(a.m + 1 < 60){
a.m += 1;
a.s = a.s + n - 60;
}
else{
if(a.h+1 < 24){
a.h +=1;
a.m = 0;
a.s = a.s + n -60;
}
else{
a.h = 0;
a.m = 0;
a.s = a.s + n -60;
}
}
}
printf("h:%d m:%d s:%d",a.h,a.m,a.s );
return 0;
}
修改之后:
#include<stdio.h>
struct shi{
int h,m,s;
};
int main()
{
struct shi a,b;
int n;
scanf("%d",&n);
scanf("%d%d%d",&a.h ,&a.m ,&a.s );
a.s += n;
if(a.s >= 60){//不用写a.s<60,因为这样h,m都不变,只需考虑a.s>=60的情况
a.s -= 60;//也可以写成 a.s=a.s%60
a.m += 1;
if(a.m >= 60){//同样不需要考虑a.m《60的情况
a.m -= 60;
a.h = (a.h + 1) % 24;//最后不用再判断a.h是否<24了【24进制】
}
}
printf("h:%d m:%d s:%d",a.h,a.m,a.s );
return 0;
}