-6

我正在尝试编写一个算法,该算法接受日期(“2000-01-01”)和“y|m|d”的输入,其中 y 是添加到原始日期和 m 和 d 的年数是月份和日期。该算法还需要考虑闰年。对不起,我还没有发布任何代码,我还没有真正得到任何工作。

该算法还需要像这样工作:如果您将 3 个月添加到 11 月 30 日,那么您将获得下一年的 2 月 28 日,或者如果是闰年,则为 29 日。因此,如果您来自的月份的长度高于最终结果月份,则将采用最终结果月份的最后一天。

有人可以给我一些关于如何编写它或链接到任何有用资源的指示吗?

我希望这是有道理的,任何问题都让我知道。谢谢。

4

2 回答 2

1

你似乎已经很好地解决了这个问题。下面是寻找闰年的算法:

if year is not divisible by 4 then common year
else if year is not divisible by 100 then leap year
else if year is not divisible by 400 then common year
else leap year
于 2014-07-16T11:54:24.913 回答
0

大多数(如果不是全部)您需要的东西都可以在<ctime>图书馆 ( http://www.cplusplus.com/reference/ctime/ ) 中找到。

特别是查找time_tandstruct tm类型以及如何在两者之间进行转换 ( localtime(), gmttime(), ...)。请注意,您可以在 a 中的字段中添加天、小时、月等,struct tm并且它们会得到正确处理,例如,“1 月 32 日”变为“2 月 1 日”。

<ctime>库还处理闰年。

您添加 3 个月的方式似乎非常规,因此您可能需要手动检查。使用<ctime>.

编辑:在有人抱怨那<ctime>是 c++ 之前,在纯 c 中,这个库位于<time.h>.

于 2014-07-16T12:14:55.227 回答