检查错误(算法实现错误,逻辑错误)
在编程的过程中,有俩个核心的的东西:
1是算法,即解决问题的步骤.
2是实现上述步骤的所需要的配套代码。
但是我认为1是非常依赖于直觉的,需要一定的天赋。有的人会在这上面花费大量的时间而出不来结果,甚至会由于步骤的不合理导致根本没有可实现的配套代码。
例如:今天写到时间换算的问题,
我的思路是:
1.原来得时间不变(12:30:45)
2.将经过的秒数除以3600取整,得到的数字加上小时。(且时间是24h制,相加后的小时位不能大于24)
将经过的秒数除以3600取余后的数字再除以60取整得到,得到的数字加上分钟。
(但实际上这个在数学上是无法实现的,因为150除以3600取余后的数字为0,也就无法实现接下来的操作,因此还得分情况。按这条思路进行就会导致代码臃肿)
.....
这是正确答案的步骤
1.将原有的时分秒的时间统一转化为以秒为单位的时间。
(这一步一开始时我压根没想到)
2.再通过整除3600s得到小时;剩下计算分钟和秒比较符合一般直觉。
scanf("%d:%d:%d",&hour,&min,&second);
scanf("%d",&later);
//处理
int total_second=hour*3600+min*60+second;
total_second+=later;
hour=total_second/3600;
min=(total_second%3600)/60;
second=total_second%60;
printf("After %d second is %02d:%02d:%02d",later,hour,min,second);
在经历过这次教训后,我深刻感觉到我个人天赋的匮乏。我唯一能做的就是将这道题的思路记忆下来,下次遇到类似的问题能够举一反三,也就是思路的复用。然后我后面要做的事就是不断刷题,将一些常规的做题思路记忆...
总结以上的要求:1.刷题
2.将题目的思路记忆下来(将步骤拆分)
3.做下一道题目,并看看能否用到以往所做题的算法。
4.循环以上步骤,期待直觉能在此基础上培养...