我环顾四周并尝试了许多方法来实现这一目标。我正在尝试建立一个日历程序。一切似乎都正常工作,直到我试图获得抵消。我可以运行该程序,当我为月份编号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;
}
答案 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。
}