需求:
给定一个xxxx-xx-xx日期,计算为星期几。设定
int y; //年
int m; //月
int d; //日
int w; //周几
公式:W= (d+2m+3(m+1)/5+y+y/4-y/100+y/400)%7
其实也可用if/else的判断进行
注意要点:闰年366天,平年365天,闰年2月份29天,平年2月份28天。设年n
如果n%4=0同时n%100!=0或者n%400==0则n为闰年,否则为平年
根据已知公元1年1月1日星期一来推算。
其中,要把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
char weekname[][10]={
"Monday",
"Tuseday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
int year;
int month;
int day;
printf("请输入年份:");
scanf("%d",&year);
printf("请输入月份:");
scanf("%d",&month);
printf("请输入日期:");
scanf("%d",&day);
if((month == 1) || (month == 2)){
month += 12;
year--;
}
int w;
w = (day+2*month+3*(month + 1)/5+year+year/4-year/100+year/400)%7;
printf("这一天是%s\n",weekname[w]);
}