测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41124. 日历问题

填空题 中等

题目描述

日历问题

题目描述

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。

输入格式

输入一行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。数据保证结果的年份不会超过9999。

输出格式

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

样例输入

1

样例输出

2000-01-02 Sunday

参考答案

#include<iostream> using namespace std; int main(){ int year=2000,month=1,day=1,time;//定义初始的年、月、日和time天以后 cin>>time; for(int i=0;i<time;i++){ day++; if(day==31){//小月有30天,但到31才判定 或可以到30判定,day=0 if(month==4||month==6||month==9||month==11){ month++; day=1; } } else if(day==32){//小大月有31天,但到32才判定 或可以到31判定,day=0 。下同义 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ month++; day=1; } } else if(day>=29&&month==2){//两月有28或29天,day大于等于29开始判定 if(((year%4==0&&year%100!=0)||(year%400==0))){//如果是闰年,那么到30 if(day==30){ month++; day=1; } } else{//否则到29 month++; day=1; } } if(month==13){//月数到13,年数加1,月数归1 year++; month=1; } } cout<<year<<"-";//年数只可能为四位数,直接输出 if(month<10)cout<<"0"<<month<<"-";//38、39、40、41行。如果月份或天数为 else cout<<month<<"-";//一位数,那么前面要加0 if(day<10)cout<<"0"<<day<<" ";//如2020.2.2变成2020-02-02 else cout<<day<<" ";//因为这个作者卡了很久 if(time%7==1)cout<<"Sunday";//取余 else if(time%7==2)cout<<"Monday"; else if(time%7==3)cout<<"Tuesday"; else if(time%7==4)cout<<"Wednesday"; else if(time%7==5)cout<<"Thursday"; else if(time%7==6)cout<<"Friday"; else cout<<"Saturday"; return 0; }
上一题 下一题