[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第66讲。
第10届蓝桥杯青少年组省赛于2019年3月24日举行,形式为线下考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
计算游泳时间,本题是第10届蓝桥杯Scratch省赛真题编程第3题,初级组和中级组都有此题,题目要求根据玩家输入的开始时间和结束时间,编程计算出游泳的时长。
先来看看题目的要求吧。
编程实现:
你要参加运动会,每天都刻苦练习游泳,并给自己的游泳时间做了精确的计时(本题中的计时都按 24 小时制计算)。你只要说出自己从 a 时 b 分一直游泳到当天的 c 时 d 分,你的小鱼教练就能计算出你这天一共游了多少时间。你的小鱼教练是怎么算出来的呢?
具体要求:
1、程序开始运行时,小鱼教练询问游泳开始时间(分别询问 24 小时制的时和分)和结束时间(分别询问24 小时制的时和分)。
2、小鱼教练计算并说出游了多长时间。但如果你输入的结束时间早于开始时间,小鱼教练就会说“输入错误!结束时间早于开始时间”,程序结束。
将程序保存到桌面,命名为“3.sb2”。
评判标准:
10 分:程序运行后,能够询问开始时间和结束时间(时和分);
40 分:在 10 分的基础上,能够正确计算出游泳的时间;
测试两种情况:
1) 结束时间的分大于开始时间的分
2) 结束时间的分小于开始时间的分
50 分:在 40 分的基础上,如果输入结束时间早于开始时间,能够提示“输入错误,结束时间早于开始时间”,需要多次以不同情况输入来验证。
本题只有一个角色,就是小鱼,如图:
严格来说,这是一道小学数学题,对于给定的起始时间和结束时间,计算二者的时间差。
起始时间和结束时间是玩家输入的,这可以通过Scratch中的问答指令来实现。
本题的重点是计算时间差,这里的时间有小时和分钟,单位不同不能直接相减,所以需要进行单位换算,统一单位,然后进行计算。
具体的做法,就是将统一将时间转换为分钟数,如果结束时间大于起始时间,就进行相减,然后再将结果转换成小时和分钟。
根据前面的思路分析,我们可以分2步来编写程序:
获取起始时间和结束时间
计算游泳时间
1. 获取起始时间和结束时间
起始时间和结束时间都是由小时和分钟组成的,为了方便,先创建4个变量,分别命名为”开始小时“、”开始分钟“、”结束小时“和”结束分钟“,然后使用问答指令,获取玩家输入的时间,代码如下:
2. 计算游泳时间
接下来就需要换算时间,统一单位,这是本题的核心算法。为了方便,可以创建一个变量”总分钟数“,用于保存开始时间和结束时间相差的总分钟数,代码也比较简单,就是将小时乘以60,再加上分钟数,然后相减,代码如下:
对于计算得到的总分钟数,可能会出现两种情况,一是小于0,这说明你输入的结束时间早于开始时间,小鱼教练要给出输入错误的提示;二是大于0,此时则需要将总分钟数再转换成小时和分钟,然后组成一句完整的话,反馈给玩家,这部分的代码如下:
为了方便,这里创建了两个变量,分别是”小时“和”分钟“,如果总分钟数 > 0,就说出小时和分钟,不过需要使用连接运算符,连接成一句完整的话。
将总分钟数转换成小时和分钟,这里用到了数学中的余数知识,整数部分就是小时数,而小数部分则是分钟数。
将上面的3段代码连在一起,程序就可以正常工作了。
本题难度系数为4,积木块数量在42个左右,涉及到的知识点主要包括:
Scratch问答指令,包括询问并等待和回答指令;
变量的使用;
运算指令,包括加减乘除和求余数;
字符串连接运算符,尤其是多个字符的连接
双分支条件指令的使用
小时和分钟的换算关系。
本题的代码量不多,但涉及到的数学知识不少,尤其是小时和分钟之间的换算关系,涉及了加减乘除和求余数等常见运算,正所谓编程和数学不分家。我们常说,生活中处处是数学,编程何尝不是如此呢!
如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。