首页 > 解决方案 > 使用高斯算法计算星期几

问题描述

我正在尝试创建一个程序,它将以三种不同的方式计算相同的日期。我目前坚持计算星期几,因为我需要这个来计算 ISO 工作日。我有一个可以使用的算法,它是我在代码中使用的算法,唯一的区别是我的代码中的 % 符号被算法中的单词“mod”替换。

当我运行它时,我收到一条错误消息“% token 之前的预期表达式”。我已经查过了,但没有找到任何结果。我也尝试过其他方法,并找到了 Sakomoto 算法,但我并不完全理解它是如何工作的。对于一个可能的解决方案,我在想我可能需要创建一个名为 mod 的函数,但我不完全确定我需要在那里放什么。

int day_of_the_week(int year)
{
int week_day;
week_day = %(1+5 * %(year - 1, 4) + 4 * %(year - 1, 100) + 6 * %(year-1, 
400), 7);
printf("The day of the week is %d\n", week_day);
return 0;
}

标签: c

解决方案


高斯

R(1 + 5R(A - 1, 4) + 4R(A - 1, 100) + 6R(A - 1, 400), 7)

应该相当于

int week_day = (1 + 5 * (year - 1) % 4) + 4 * ((year - 1) % 100) + 6 * ((year - 1) % 400) % 7;

推荐阅读