C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式 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来代入公式计算。 - #include "stdio.h"
- void CaculateWeekDay(int y,int m, int d)
- {
- if(m==1||m==2) {
- m+=12;
- y--;
- }
- int iWeek=(d+2*m+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;
- }
- }
- int 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);
- }
- return 0;
- }
复制代码
|