pat中的题 然后是几点 不知道哪错了

qq_45759632 2019-11-01 10:31:46
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310 #include<stdio.h>
main()
{
int a,b,hour, min;
scanf("%d %d",&a,&b);
hour=a/100;
min=a%100+b;
if(min>=60)
{
int i;
i=min/60;
hour+=i;
min=min%60;
}
else if(min<0)
{
int n;
n=min/60;
hour=hour+n;
min=min%60+60;
}

printf("%d",hour*100+min);
return 0;
}

}
...全文
521 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon- lemon 2021-10-21
  • 打赏
  • 举报
回复
#include <stdio.h>
int main ()
{
   int t,x,hour,min,t1;
   scanf("%d %d",&t,&x);
   hour=x/60;
   min=x%60;
   t1=t%100;
   t+=hour*100;
   if(x>0)
   {
      if((t1+min)>=60) {t+=100;t+=min-60;}
      else t+=min;
   }
   else
   {
      if((t1+min)<0)  {t-=100;t+=min+60;}
      else t+=min;  
   }
   if(t<100) printf("%03d",t);
   else printf("%d",t);
   return 0;
}

wowpH 2019-11-02
  • 打赏
  • 举报
回复
昨天论坛就有人问。
#include <stdio.h>

#define DAY_MINUTE 1440

int main(void) {
	int t1, m1;
	scanf("%d %d", &t1, &m1);
	m1 = (m1 + DAY_MINUTE) % DAY_MINUTE;// 将负数转成正数
	int m2 = t1 % 100 + m1;// 起始时间的分钟加上时间差的分钟
	int m3 = m2 % 60;// 最终的分钟
	int h1 = (t1 / 100 + m2 / 60) % 24;// 起始小时加进位的小时
	printf("%d%02d", h1, m3);
	return 0;
}
636f6c696e 2019-11-02
  • 打赏
  • 举报
回复
负数算的有问题

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧