介绍给大家一个神奇的函数:【返回任何年任何月份任何一天是星期几】
include
using namespace std;
int getDay(int year, int month, int day)//返回任意一天是星期几
{
if (month == 1 || month == 2) year–;
int k = day;
int m = ((month - 2) + 12) % 12;
if (m == 0) m = 12;
int Y = year % 100;
int C = year / 100;
return ((k + int(2.6 * m - 0.2) - 2 * C + Y + int(Y/4) + int(C/4)) % 7 + 7) % 7;
}
bool run(int year)
{
if (year % 4 == 0 && year % 100 != 0) return true;
if (year % 400 == 0) return true;
return false;
}
int main()
{
int n;
while (~scanf(“%d”, &n))
{
int day = getDay(n, 2, 1);
puts(” SU MO TU WE TH FR SA”);
int cnt = 3 * day;
while (cnt–) putchar(‘ ‘);
cnt = 1;
int end = run(n) ? 29 : 28;
for (int i = 0,j = day; cnt <= end; j++)
{
if (j > 6)
{
j = 0;
i++;
puts(“”);
}
printf(“%3d”,cnt++);
}
puts(“”);
}
return 0;
}
哈哈哈哈哈哈人才