65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <string>
using namespace std;
#define BEGINYEAR 1970
#define BEGINMONTH 1
#define BEGINDAY 1
#define BEGINWEEK 4
const string weeks[]={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
const int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int getDays(int y,int m,int d)//返回y-m-d到begin日期的天数
{
if (y<BEGINYEAR || m<BEGINMONTH || d<BEGINDAY)
{
return -1;
}
int countday=0;
for (int i=BEGINYEAR;i<y;i++)
{
if (i%4==0 && i%100!=0 || i%400==0)//闰年
{
countday+=1;
}
countday+=365;
}
for (int j=0;j<m-1;j++)
{
countday+=days[j];
if (j==1)//第二月
{
countday+=(y%4==0&&y%100!=0||y%400==0)?1:0;
}
}
return countday+d-1;
}
void main()
{
int y,m,d;
cout<<"请输入年月日:";
cin>>y>>m>>d;
cout<<"这是"<<weeks[(getDays(y,m,d)+BEGINWEEK-1)%7]<<endl;
}