7-2 然后是几点 PTA刷题

这题真是无语凝噎…

首先拿到题目开始胡乱分析
我思考着情况这么多是不是要把现在时间的分钟和小时分开计算,于是我大干一场,不妨把现在的时间记为now,我把now/10%10算出个位,now%10算出十位等等一直算到千位,全部记为abcd,哇我好厉害现在就可以开始分别吧进一位和借一位什么的情况分开了!!动手的时候我停住了,因为太麻烦了,感觉自己在暴力解决(不是感觉,就是)
然后又开始想着别的方法,单独把now的分钟提取出来,和流逝的时间(设为time)加起来,大于六十整体now+100,小于-100,那now的分钟部分也要…我停住了,因为没比上面的简单多少,这还没考虑小时0的问题我已经疯了…

最后参考别人才知道了全部化成分钟然后再把分钟化成小时!鼓掌!!这个办法的好处在于,不用多余讨论进一或者借一,也不用管小时为个位前面零不零的问题了!好办法!!

于是我乐呵的去敲代码了,如下

#include<stdio.h>
int main()
{
	int now,time;//现在的时间和流逝的时间
	int min,min2;//现在的分钟和流逝后的分钟
	int hour;//此为最后输出的小时
	scanf("%d %d",&now,&time);
	min=now/100*60+now%100;
	min2=min+time;
	hour=min2/60*100+min2%60;
	printf("%d",hour);
	return 0;
}

运行没问题,测试数据没问题,pta没让我过,为什么呢?因为我没考虑到小时为0的情况,比如一开始是030,流逝时间20,最后应该是050,这个代码的结果是50。

找到为什么不通过就简单了,无非是多个if嘛,最终结果如下

#include<stdio.h>
int main()
{
	int now,time;
	int min,min2;
	int hour;
	scanf("%d %d",&now,&time);
	min=now/100*60+now%100;
	min2=min+time;
	hour=min2/60*100+min2%60;
	if(hour<100){
		printf("0%d",hour);
	}//hour为两位数就是小时为0,只有分钟,所以加个0就完了
	else{
	printf("%d",hour);
	return 0;
	}	
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值