习题提交之后一直没给到满分,但是不知道问题出在哪?求解答,十分感谢!
题目:
有时候人们用四位数字表示一个时间,比如 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;
}