18_1日期问题

题目描述:

2000年1月1日是星期六,现在给你任意一个天数n,代表其距离2000年1月1日有n天,让你求该天是几年几月几日,星期几。比如n=2,输出“2000-1-3 Monday”。(记得注意闰年有366天,而且二月有29天)

AC代码:

#include <stdio.h>

int isLeap(int year)
{
    if(year%400==0||(year%4==0&&year%100!=0))return 1;
    return 0;
}

void show(int num)
{
    if(num==0)printf("Monday");
    else if(num==1)printf("Tuesday");
    else if(num==2)printf("Wednesday");
    else if(num==3)printf("Thursday");
    else if(num==4)printf("Friday");
    else if(num==5)printf("Saturday");
    else printf("Sunday");
    printf("\n");
}

int main()
{
    int a[13][2]={{31,31},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int year=2000,month=1,day=1,num=5;
        for(;n>0;n--)
        {
            day++;
            num++;
            num%=7;//num的范围是0到6
            if(day-1==a[month][isLeap(year)])
            {
                day=1;
                month++;
            }
            if(month==13){
                year++;
                month=1;
            }
        }
        //printf("%d\n",num);
        printf("%d-%d-%d ",year,month,day);
        show(num);
    }
}

发布了54 篇原创文章 · 获赞 1 · 访问量 494

猜你喜欢

转载自blog.csdn.net/weixin_43370733/article/details/103946730
今日推荐