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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值