我很困惑,为什么Visual Studios在century)
之后% 7;
之前需要分号。它说我犯了语法错误。但是我想把整个事情放在括号中,然后对模7进行模数化。
int determineDay(int month, int day, int year) {
const int HUNDRED_YEARS = 100;
int newYear = year % HUNDRED_YEARS;
int century = (year - newYear) / HUNDRED_YEARS;
if (month == 1) {
const int ONE_YEAR = 1;
month = 13;
year = year - ONE_YEAR;
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
else if (month == 2) {
const int ONE_YEAR = 1;
month = 14;
year = year - ONE_YEAR;
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
else {
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
return zellerNumber;
}
}
答案 0 :(得分:3)
正如其他人所说,你在day
之前缺少一个左括号。
添加到此...
这是一个小的语法错误,但如果您不努力简化逻辑,它们将继续发生。请注意,if-else-if
的所有路径中都会显示以下内容:
int zellerNumber = (day + floor((13 * (month + 1)) / 5)) + year
+ floor(year / 4) + floor(century / 4) + 5 * century) % 7;
就像数学一样,你可以“考虑”这一点。既然您知道计算zellerNumber
的逻辑是相同的,无论情况如何(只有变量发生变化),您都可以将其移到if-else-if
下方。这也将允许您只有一个return
语句。通常,你应该以此为目标。
简化您的逻辑,您将看到更少的语法错误,并且您遇到的错误将更容易找到。