使用高斯算法计算星期几

标签 c

我正在尝试创建一个程序,它将以三种不同的方式计算相同的日期。我目前一直在计算星期几,因为我需要它来计算 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;
}

最佳答案

高斯

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;

关于使用高斯算法计算星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976416/

相关文章:

c++ - 与主线程相比,辅助线程崩溃是否有优势?

c - void* 是否始终具有与 char* 相同的表示形式?

c - 修改popen输出并用c语言打印

c++ - "strip"(GCC 应用程序)是做什么用的?

在我的代码中找不到 'Definitely lost memory'

c# - 从C#运行C代码

c++ - memcpy 和 std 组件,例如 map : runtime failer

C - sigqueue 调用时 Valgrind 报告 "Syscall param points to uninitialised byte"

c - 使用 "*"符号获取字符作为密码并与您的密码匹配

c - Mac OS 等同于 Windows Fibers API?