computeOffset日历程序

时间:2016-05-28 01:14:08

标签: c++ calendar

我环顾四周并尝试了许多方法来实现这一目标。我正在尝试建立一个日历程序。一切似乎都正常工作,直到我试图获得抵消。我可以运行该程序,当我为月份编号1和年份1753时,它可以工作。但是,任何其他年份它都不会返回任何东西。这是我正在使用的代码。

//Get number of days in the given year                                                                                                                                               
int numDaysInYear(int year)
{
   int dayStart;
   int numberFour = (year - 1) / 4;
   int oneHundred = (year - 1) / 100;
   int fourHundred = (year -1) / 400;

   dayStart = (year + numberFour - oneHundred + fourHundred) % 7;

   return dayStart;

}

//Compute the offset                                                                                                                                                                 
int computeOffset(int month, int year)
{
   int numDays = 0;
   int yearCount = year - 1753;

   for (int yearStart = 1753; yearStart > 1753; yearStart - 1 )
   {
      numDays = numDaysInYear(yearStart);

   }

   for (int monthCount = 1; monthCount > month; month++)
   {
      numDays = (numDaysInMonth(monthCount, year));
   }

   return numDays % 7;
}

1 个答案:

答案 0 :(得分:1)

假设year是2016年。

//Get number of days in the given year                                                                                                                                               
int numDaysInYear(int year)
{
   int dayStart;
   int numberFour = (year - 1) / 4;

numberFour是503。

   int oneHundred = (year - 1) / 100;

oneHundred是201。

   int fourHundred = (year -1) / 400;

fourHundred是5。

   dayStart = (year + numberFour - oneHundred + fourHundred) % 7;

这是(2016 + 503 - 201 + 5)mod 7,即2323 mod 7,恰好是6。

   return dayStart;

6不是一年中的天数。

}


int computeOffset(int month, int year)
{
   int numDays = 0;

   for (int yearCount = year - 1753; yearCount < year; year++){
      numDays = numDaysInYear(yearCount);
   }

这个循环没有做任何事情。它分配给numDays,然后覆盖它;这些价值从未使用过。

   for (int monthCount = 1; monthCount < month; month - 1)
   {
      numDays += numDaysInMonth(monthCount, year);
   }

好吧,我们不了解您的numDaysInMonth功能。但是month - 1并没有改变索引变量:除非month碰巧为1,否则这将是一个无限循环。

   return numDays % 7;

你为什么要退回mod 7?这意味着唯一可能的值为0,1,2,3,4,5或6。

}