蔡勒(Zeller)公式求星期几模板
用法:输入代表年月日的三个空格隔开的整数 ,输出该日期是星期几。如果日期不合法输出illegal。
#include<iostream>
using namespace std;
bool m[] = {false,true,false,true,false,true,false,true,true,false,true,false,true};
char b[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int main()
{
int year,month,day;
while(cin>>year>>month>>day)
{
if((year <= 0 || month <= 0 || day <= 0) || (month == 2 && day>29) || (!m[month] && day >= 31))
{
printf("illegal\n");
continue;
}
if(!((year%4 == 0 && year%100 != 0) || year%400 == 0) && month == 2 && day == 29)
{
printf("illegal\n");
continue;
}
if(month<3)
{
year-=1;
month+=12;
}
int c= int(year/100),y = year-100*c;
int w= int(c/4)-2*c+y+int(y/4) + (26*(month+1)/10)+day-1;
w=(w%7+7)%7;
cout<<b[w]<<endl;
}
return 0;
}