闰年计算-第13届蓝桥杯Scratch选拔赛真题精选

[导读]:蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第13届蓝桥杯青少年组第1次选拔赛于2021年8月14日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

闰年计算,本题是2021年8月14日举行的第13届蓝桥杯Scratch选拔赛真题编程第5题,初级组和中级组都有此题,题目要求编程计算玩家输入的年份是闰年还是平年,输入的月份有多少天。

先来看看题目的要求吧。

一.题目说明

背景信息:

每年的 1、3、5、7、8、10、12 月都有 31 天; 4、6、9、11 月都有 30 天;2月比较特殊,公历年份能被4整除的是闰年,其他是平年,例如2020年是闰年,2021年是平年。平年的2月有28天,闰年的2月有29天。

编程实现:运行程序,在对话框输入年份与月份,并说出输入年份为平年还是闰年,输入月份有多少天。具体要求:

1). 点击绿旗,询问请输入年份并出现对话框;

 

2). 说出输入年份为平年还是闰年(年份大于2001,小于2040);

3). 询问请输入月份并出现对话框(1-12);

4). 说出输入月份有多少天;

5). 完整说出刚才输入年份为平年或闰年,输入月份一共有多少天。

 

评分标准:

  • 5分:满足要求1);
  • 5分:满足要求2);
  • 6分:满足要求3);
  • 7分:满足要求4);
  • 7分:满足要求5)。

二.作品效果

在编程之前,先来看看作品的完整效果吧:

三.思路分析

本题只有1个小狗角色,舞台背景和角色分别来自于Scratch3.0自带的背景库和角色库,如图所示:

闰年分为普通闰年和世纪闰年,其判断方法为:公历年份是4的倍数,且不是100的倍数,为普通闰年。公历年份是整百数,且必须是400的倍数才是世纪闰年。有一个简单的十二字口诀:四年一闰、百年不闰、四百再闰。比较特殊的是世纪年份,比如1900年不是闰年,而2000年是闰年。题目给出的年份范围是2001~2040,不包括世纪年份,如此一来,只需要判断输入年份能否被4整除,如果能整除就是闰年,否则为平年。

本着严谨的态度,我这里还是给出完整的解决方案,即不限年份。其实就是两种情况:

  • 普通闰年
  • 世纪闰年

对于普通闰年,只需要同时满足两个条件,一是能被4整除,二是不能被100整除。对于世纪闰年,只需要满足一个条件,即能被400整除。两种闰年之间是或者的关系,使用逻辑或进行运算即可。如何判断某个月份有多少天呢?每个月的天数基本上是固定的,一个比较巧妙的方法是将12个月份的天数使用列表保存起来,如图:

有了这个列表,要获取某个月份的天数就非常简单了,列表编号刚好对应于月份,需要特殊处理的是2月份,这里保存的是平年的天数,即28天,如果是闰年,2月份有29天。

四.编程实现

根据题目描述和思路分析,我们可以分4步来编写程序:

  • 初始化列表
  • 判断闰年还是平年
  • 计算月份天数
  • 说出完整语句

1. 初始化列表

根据思路分析,先创建一个列表,命名为“月份天数”,并添加好12个月份的天数,为了方便起见,我们可以创建一个自制积木来完成这项工作,代码如下所示:

很多同学直接向列表中添加数据,也是可以的,但使用代码方式添加更加安全合理,强烈推荐使用这种方式,不过要注意在添加之前清空列表,避免多次添加。

2. 判断闰年还是平年

绿旗被点击时,小狗位于舞台中心,然后开始询问输入年份,当玩家输入年份之后,就需要判断是闰年还是平年了,根据前面的思路分析,编写代码如下:

简要说明如下:

1). 为了方便,这里定义了一个变量“年”,用于保存玩家输入的年份;

2). 判断是否整除就是求余数,因此这里使用的是“a除以b的余数”指令;

3). 这里的条件比较长,其中前面的两个条件进行的是逻辑与运算,用于处理普通闰年,第3个条件则用于处理世纪闰年的;

4). 列表中2月份默认添加的是28天,如果是闰年,2月份应该是29天,所以这里对2月份天数做了一个特殊处理,如果是闰年将2月份更新为29天,否则更新为28天。

3. 计算月份天数

接着就是询问月份了,这个非常简单,直接上代码:

为了方便,这里也定义了一个变量“天数”,用于保存当前月份的天数。

4. 说出完整语句

最后需要完整地说出一句话,有的同学就开始犯难了,难道还要再判断一次吗?其实我们可以换个思路,使用分步处理的方法。

先定义一个变量“完整语句”,用于表示最后要说的内容,绿旗点击时,先将变量设置为空字符串,在判断闰年的时候,根据闰年还是平年分别设置不同的内容,当说出月份有多少天之后,再进行字符串连接即可,在之前的代码块中添加代码如下:

至此,整个作品就创作完成了,你可以输入不同的年份和月份来测试效果了。

五.总结与思考

本题难度系数为4,积木块数量在64个左右,涉及到的知识点主要包括:

  • Scratch问答,包括询问并等待和回答;
  • 逻辑运算,包括逻辑与、逻辑或和逻辑非(不成立);
  • 列表的灵活运用,包括列表的清空、插入、获取和替换等操作;
  • 使用取余数指令判断两个数是否能整除;
  • 字符串连接运算,重点是多个连接指令的组合使用;
  • 自制积木的使用。

本题的难点是判断闰年的条件,如果只是判断2001~2040年之间的年份,则要简单不少,对于大部分孩子来说,应该没有任何难度。其次是关于列表的灵活运用,列表在编程中的作用举足轻重,一定要熟练掌握。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

红绿灯记忆游戏-第13届蓝桥杯Scratch选拔赛真题精选

2023-7-10 8:08:21

综合资讯

四位数密码-2022年全国青少年信息素养大赛Python国赛第4题

2023-7-11 8:28:11

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索