题目描述
编写一个程序,只要输入年月日,就能回答那天是星期几。
能被4整除但不能被100整除的,或者能被400整除的是闰年。
1、已知公元1年1月1日是星期一
2、算法:如果输入的是2006年7月10日,计算方法是
(1)先计算从公元1年1月1日到2005年末(2005-12-31)共多少天,注意其中有闰年
(2)然后再计算2006年1月1日到2006年7月10有多少天。
注意同样判断本年度是否闰年,即二月份是28天还是29天。
(3)上述两部分相加计算得到的天数,用该天数与7求余,余数即为星期几。
输入
输入一个日期,包括年、月、日。(一组测试数据)
输出
输出这个日期是星期几。
样例输入
1 1 1
2 1 1
2006 7 10
样例输出
Monday
Tuesday
Monday
#include <iostream>
using namespace std;
int main()
{
int year, month, day;
cin >> year >> month >> day;
int days = 0;
for (int i = 1; i < year; i++)
{
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
days += 366;
else
days += 365;
}
int monthdays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
monthdays[2] = 29;//闰年2月天数特殊处理
for (int i = 1; i < month; i++)
{
days += monthdays[i];
}
days += day;
int week = days % 7;//0为周日,1为周一,2为周二,以此类推
switch (week)
{
case 0:
cout << "Sunday" << endl;
break;
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
case 4:
cout << "Thursday" << endl;
break;
case 5:
cout << "Friday" << endl;
break;
case 6:
cout << "Saturday" << endl;
break;
}
return 0;
}