蔡勒(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;
}

 

posted @ 2018-08-12 13:22  Assassin_poi君  阅读(210)  评论(0编辑  收藏  举报