题目描述
给定一个日期,请你判断它是对应一周中的哪一天。
输入格式
输入为三个整数:day、month 和 year,分别表示日、月、年。题目保证输入的日期为1971到2100年之间的合法有效日期
输出格式
输出该日期对应一周中的哪一天所对应的英文单词
Tip:周日到周六的英文分别是"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; 1971.01.01是星期五
#include<bits/stdc++.h>
using namespace std;
bool run(int n){//闰年判断
if(n%400 == 0)
return true;
else if(n%4 == 0 && n%100 != 0)
return true;
else
return false;
}
//主函数外建立篇全局变量:
int y,m,d,sum=0;
int main(void) {
/*
思 路:
建立sum记录天数
已知1971.01.01是星期五
日会比正常的多1
sum=(sum+=3)%7就是星期
*/
//y是年m是月d是日;
//sum用来记录过了几天
//输入
cin>>d>>m>>y;
//遍历年
for(int i=1970;i<y;i++){
if(run(i))
sum+=366;
else
sum+=365;
}
//遍历月
//建立一个a存储每月的天数
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//注意2月是平年的情况
for(int i=1;i<m;i++){
//如果是闰年还是2月29天
if(i==2&&run(y)){
sum+=29;
} else sum+=a[i];
}
//加上日
sum+=d;
//日会比正常的多1
sum=(sum+=3)%7;
string week_name[8]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
cout<<week_name[sum];
return 0;
}