【问题标题】:Calculating dates ( with limited tools)计算日期(使用有限的工具)
【发布时间】:2011-02-28 21:39:32
【问题描述】:

我正在尝试计算两个日期之间的差异,以完成家庭作业。 唯一的问题是我们不能在 for while if 循环之外使用任何东西……这让我发疯了。我尝试为它编写 sudocode,它看起来很简单,但是当我开始坐下来编写代码时,当几个月开始时,我会迷失方向。(不包括闰年)

假设开始日期是 2015 年 7 月 3 日到 2016 年 3 月 5 日。

我原本打算在当月结束之前添加天数,并且几乎从天数开始计算所有内容。但是当我开始为每个月包括不同的日子时,我有点迷失了。

【问题讨论】:

  • 尝试一下。当它出现问题时,请在此处发布代码,我们会尽力帮助您找出问题所在。
  • 提示:你不应该需要任何 while 循环。此计算是固定步数的纯算术运算。
  • 另一个提示:考虑朱利安日期

标签: c nested nested-loops


【解决方案1】:

计算你在那个月能走多远的想法可能是

for(day=1;day<=days_in_month(month);day++){
    counter++;
}

然后有一个 days_in_month 函数,它使用一些 if 语句返回。如果你有一点谷歌我记得看到一些很好的声明来有效地解决这个问题 - 如果你需要包括闰年,你显然需要将年份传递给 days_in_month 函数。 显然,您需要将上述循环嵌套在其他循环中。

希望这会有所帮助,祝你好运。

【讨论】:

    【解决方案2】:

    第 1 步:编写一个函数将日期转换为“自 epoc 以来的天数”,其中考虑了闰年等因素。epoc 可能是“1/1/1970”。使用查找表很容易 - 一个用于“前几年的天数”,其中包括闰年标志,另一个用于非闰年的“前几个月的天数”(如果前一个表中的闰年标志已设置并且月份在二月之后,您添加一天)。然后,您将添加“往年的天数”、“前几个月的天数”和当月的某一天以获得“自 epoc 以来的天数”。

    第 2 步:将两个日期转换为“自 epoc 以来的天数”整数并减去。

    注意:讲师可能希望您使用计算而不是使用查找表。在这种情况下,请使用查找表使其工作,然后一次替换一个查找表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多