ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝桥杯 日历:推算日期与星期

2021-12-20 23:02:25  阅读:173  来源: 互联网

标签:run int 31 日历 推算 month 蓝桥 year n1


日历
日历是用于表述时间的系统,从小时到分钟,从月到日,最后从年份到世纪。术语小时、 日、月、年、世纪都是日历系统表述时间的单位。 按照目前国内使用的阳历,闰年被定义为能被4整除的年份,但是能被100整除而不能被 400整除的年是例外,它们不是闰年。例如:1700、1800、1900和2100不是闰年,而1600、 2000和2400是闰年。给定公元2000年1月1日后的天数,你的任务是给出这一天是哪年哪月哪日星期几。

输入格式
输入包含若干行,每行包含一个正整数,表示2000年1月1日后的天数。输入最后一行是 -1,程序不必处理。可以假设输出的年份不会超过9999。

输出格式
对每个测试样例输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”,其中 “DayOfWeek” 必须是下列常量中的一个:“Sunday”,“Monday”, “Tuesday”,“Wednesday”,“Thursday”,“Friday” 或 “Saturday”。

输入样例
1629
1345
1001
1876
-1

输出样例
2004-06-17 Thursday
2003-09-07 Sunday
2002-09-28 Saturday
2005-02-19 Saturday

#include<stdio.h>
int run(int year);
void format(int month); 
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
    int n;
    char s[7][12]={" Saturday"," Sunday"," Monday"," Tuesday"," Wednesday"," Thursday"," Friday"};
    //scanf("%d",&n);
    while(n!=-1&&scanf("%d",&n)!=0){
        int n1=-1,year=2000,month=1,date=0;
        while(n-n1>run(year)){
            n1+=run(year);
            if(n-n1>0){
                year++;
            }
        }
        if(run(year)==366){
            a[2]=29;
        }else{
            a[2]=28;
        }
        while(n-n1>a[month]){
            n1+=a[month];
            if(n-n1>0){
                month++;
            }
        }
        while(n-n1>0){
            date++;
            n1++;
        }
        printf("%d-",year);
        format(month);
        printf("-");
        format(date);
        printf("%s",s[n%7]);
   }
    return 0; 
}
int run(int year){
    if(!(year%4)){
        if(!(year%100)&&(year%400)){
            return 365;
        }else{
            return 366;
        }
    }else{
        return 365;
    }
}
void format(int time){
    if(time<10){
        printf("0%d",time);
    }else{
        printf("%d",time);
    }
}

灵感参考链接:(5条消息) 日历:推算日期与星期_Hoolys-CSDN博客

标签:run,int,31,日历,推算,month,蓝桥,year,n1
来源: https://www.cnblogs.com/8023yyl/p/15713335.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有