c语言编写小程序 已知2019年的元旦是星期四 ,求出2019年的任何一个日期是星期几
#include <stdio.h>
int main ()
{
int y, m, d, c, w;
printf ("输入年 月 日(空格间隔):");
scanf ("%d %d %d", &y, &m, &d);
if (m ==1 || m == 2) { //判断月份是否为1或2
y--;
m += 12;
}
c = y / 100;
y = y - c * 100;
w = (c / 4) - 2 * c + (y + y / 4) + (13 * (m + 1) / 5) + d - 1;
while (w < 0) w += 7;
w %= 7;
if (w == 0) printf ("星期日");
else printf ("星期%d", w);
return 0;
}
扩展资料:
算法如下:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7。
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
余数是几,就代表星期几,
如余数是1,就表示是星期一;
余数是2,就表示是星期二。
需要说明的,如果余数是0,则表示是:星期天/星期日。