C語言根據指定日期計算是星期幾
C語言根據日期判斷星期幾(使用基姆拉爾森計算公式)
算法如下:
基姆拉爾森計算公式
W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年數。
注意:在公式中有個與其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
#include "stdio.h"void CaculateWeekDay(int y,int m, int d) { if(m==1||m==2) { m+=12; y--; } int iWeek=(d+2m+3(m+1)/5+y+y/4-y/100+y/400)%7; switch(iWeek) { case 0: printf("星期一\n"); break; case 1: printf("星期二\n"); break; case 2: printf("星期三\n"); break; case 3: printf("星期四\n"); break; case 4: printf("星期五\n"); break; case 5: printf("星期六\n"); break; case 6: printf("星期日\n"); break; } } void main() { int year=0,month=0,day=0; printf("請輸入日期:\n格式為:1900,1,1\n"); char temp = '1'; while (temp != '0') { scanf("%d,%d,%d",&year,&month,&day); scanf("%c",&temp); CaculateWeekDay(year,month,day); printf("輸入0退出,其他繼續:"); scanf("%c",&temp); } }</pre>
運行后交互輸出結果如下:
請輸入日期:
格式為:1900,1,1
2008,4,29
星期二
輸入0退出,其他繼續:l
2013,8,29
星期四
輸入0退出,其他繼續:0
請按任意鍵繼續. . .
編者注:用來算現在真實日期的星期是沒有問題的。原理是根據已知公元1年1月1日的星期數來推算。如果在你的題目中約定了某天是星期幾,你要注意那天的星期是否跟真實的星期相同,如果不同,需要考慮相差幾天!