1308 what day is it.cpp

来自「威士忌的HDU题解.大概有260多题的源码。对于学习非常有好处。」· C++ 代码 · 共 61 行

CPP
61
字号
#include <cstdio>
using namespace std;
int mday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char mstr[13][20]={"\0","January","February","March","April","May","June","July","August","September","October","November","December"};
char weekday[8][20]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

bool isLeap(int y)
{
	if((y%4==0 && y%100!=0) || y%400==0)
		return true;
	else
		return false;
}

int main()
{
	int i,w,m,d,y,days,now;
	bool flag;
	
	while( scanf("%d %d %d",&m,&d,&y)!=EOF )
	{
		flag=true;
		if(m==0 && d==0 && y==0)
			break;
		if(m!=2)
		{
			if(d>mday[m])
				flag=false;
		}
		else
		{
			if(isLeap(y))
			{
				if(d>29)
					flag=false;
			}
			else	if(d>28)
				flag=false;
		}
		if(flag)
		{
			days=(y-1)*365.2425;
			for(i=1;i<m;i++)
				days+=mday[i];
			if(m>2)
				if(isLeap(y))
					days++;
			days+=d;
			if(y<1752 || (y==1752 && ( m<9 || m==9 && d<=2 ) ))
				days+=11;
			w=days%7;
			printf("%s %d, %d is a %s\n",mstr[m],d,y,weekday[w]);
		}
		else
		{
			printf("%d/%d/%d is an invalid date.\n",m,d,y);
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?