2、日期类问题

题目描述:

  给定一个日期,算出是星期几

样例输入:

9 October 2001

14 October 2001

样例输出:

Tuesday

Sunday

#include<stdio.h>
#include<string.h>
#define isleap(x) x%100!=0&&x%4==0||x%400==0?1:0
int dayofmonth[13][2]={
    0,0,
    31,31,
    28,29,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31,
};

struct Date{
    int year;
    int month;
    int day;
    void nextday()
    {
        day++;
        if(day>dayofmonth[month][isleap(year)])
        {
            day=1;
            month++;
            if(month>12)
            {
                month=1;
                year++;
            }
        }
    }
};


int buf[3001][13][32];

char weekname[7][20]={
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thurday",
    "Friday",
    "Satrday",
};

char namemonth[13][20]={
    "",
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December",
};

int main()
{
    Date tmp;
    int count=0;
    tmp.day=1;
    tmp.month=1;
    tmp.year=0;
    while(tmp.year!=3001)
    {
        buf[tmp.year][tmp.month][tmp.day]=count;
        tmp.nextday();
        count++;
    }
    int y,m,d;
    char s[20];
    while(scanf("%d%s%d",&d,s,&y)!=EOF)
    {
        for(m=1;m<=12;m++)
        {
            if(strcmp(s,namemonth[m])==0)
            {
                break;
            }
        }
        int days=buf[y][m][d]-buf[2012][7][16];
        days+=1;
        puts(weekname[(days%7+7)%7]);
    }
    return 0;    
}

猜你喜欢

转载自www.cnblogs.com/womendouyiyang/p/11666689.html