首页 > 其他 > 详细

PAT乙级题目--然后是几点

时间:2021-03-02 14:33:22      阅读:20      评论:0      收藏:0      [点我收藏+]
然后是几点 (15 分)
 

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

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

输入格式:

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

输出格式:

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

输入样例:

1120 110

输出样例:

1310

 

 

我的思路:

#include<stdio.h>
int main()
{
     int hour1,min1,hour2,min2,t1,t2;
     scanf("%d %d",&t1,&t2);
     hour1=t1/100;
     min1=t1%100;
     hour2=t2/60;
     min2=t2%60;int s1,s2;
     s1=hour1+hour2;
     s2=min1+min2;
     if(s2>=60){
         s1++;
         s2=s2%60;
     }
     printf("%d",s1*100+s2);
    return 0;
}

但提交时发现第三个测试点过不了

技术分享图片

 

研究发现,当例如输入类似030 -28等数据时时,我的代码只会输出2,而题目要求应该是002.

所以改变输出的方式即可

 

修改后的代码:

#include<stdio.h>
int main(void)
{
    int t1=0;
	int min=0;
	int t2=0;
    scanf ("%d",&t1);//输入一个四位数字或三位数字。
    scanf ("%d",&t2); //输入分钟数。
    min=t1/100*60+(t1%100);//转换为分钟数。
    min=min+t2;//总的分钟数。    
    printf("%d%d%d",min/60,min%60/10,min%60%10);//注意最后分钟数为一位数的情况。
    return 0;
}

  

这样就可以顺利通过第三个测试点了。

PAT乙级题目--然后是几点

原文:https://www.cnblogs.com/-syt/p/14468557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!