模函数语法错误

Function Syntax Error with Modulo

本文关键字:错误 语法 函数      更新时间:2023-10-16

我很困惑为什么Visual studio说在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;
    }
}

正如其他人所说,您在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语句。通常情况下,你应该以此为目标。

简化你的逻辑,你会看到更少的语法错误,你遇到的错误将更容易发现。