求日期和星期,不查怎么知道2000.1.1是星期六呢
#include<cstdio>
using namespace std;
//2000.1.1 星期六
//暴力吧,想不出什么捷径
bool is_leapyear(int n)
{
return ((n%4==0&&n%100!=0)||(n%400==0));
}
char week[10][10]= {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int month[20] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int n;
int year,m,day,w;
while(scanf("%d",&n)&&n!=-1)
{
year = 2000,m = 1,day = 1,w = 6;
w = (w+n)%7;
while(n>365)
{
n -= 365;
if(is_leapyear(year))
n--;
year++;
}
while(n--)
{
if(is_leapyear(year))
month[2] = 29;
else
month[2] = 28;
day++;
if(day>month[m])
{
day = 1;
m++;
if(m>12)
{
m = 1;
year++;
}
}
}
printf("%d-%02d-%02d %s\n",year,m,day,week[w]);
}
return 0;
}

京公网安备 11010502036488号