您当前的位置: 首页 >  蓝桥杯

不牌不改

暂无认证

  • 0浏览

    0关注

    422博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[蓝桥杯][算法提高VIP]任意年月日历输出

不牌不改 发布时间:2021-07-28 00:33:36 ,浏览量:0

题目

题目链接

题解

注意两点:

  1. 计算从2007.1.1到输入年份、月份的天数;
  2. 根据天数算出输入的月份开始于星期几。 计算出这两个,控制一下输出格式就可以了。

天数的计算: 众所周知的口诀

一三五七八十腊,三十一天永不差,四六九冬三十整……

一月、三月、五月、七月、八月、十月、十二月都是三十一天;四月、六月、九月、十一月都是三十天;闰年二月是二十九天,其他时候二月都是二十八天。

闰年:年份能被400整除,或能被4整除但不能被100整除

也就是闰年一年是366天,平年一年是365天。

知道了这些知识就可以计算出天数了,假设输入的年份为year,月份为month。 因为题目告诉2007.01.01的信息了,因此我们要以2007.01.01为起点向后推算。

2007 ~ year-1的天数,含义为2007全年的天数(平年365)、2008全年的天数(闰年366)、……、year-1全年的天数;

算出第year年之前的天数了,但是从第year年1月1日开始到第year年month-1月最后一天的天数还没算。给个循环累加一下就行了,但还是要注意判断平闰。

两部分的累加和就是总天数。

得到天数,以2007.01.01的星期一为起始,每7天循环一个星期,不用多讲了吧。

强调一点,上面闰年的定义啊,每个月的天数啊,天数的求法啊都要掌握,蓝桥经常出。

代码
#include
using namespace std;

int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, sum, res;

int main()
{
	cin>>year>>month;
	cout            
关注
打赏
1662186765
查看更多评论
0.0371s