[导读]:超平老师计划推出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”。
![图片[1]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-230-1024x450.png)
![图片[2]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-231-1024x451.png)
![图片[3]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-232-1024x451.png)
评判标准:
- 10 分:程序运行后,能够询问开始时间和结束时间(时和分);
- 40 分:在 10 分的基础上,能够正确计算出游泳的时间;
测试两种情况:
1) 结束时间的分大于开始时间的分
2) 结束时间的分小于开始时间的分
- 50 分:在 40 分的基础上,如果输入结束时间早于开始时间,能够提示“输入错误,结束时间早于开始时间”,需要多次以不同情况输入来验证。
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题只有一个角色,就是小鱼,如图:
![图片[4]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-233-894x1024.png)
严格来说,这是一道小学数学题,对于给定的起始时间和结束时间,计算二者的时间差。起始时间和结束时间是玩家输入的,这可以通过Scratch中的问答指令来实现。
本题的重点是计算时间差,这里的时间有小时和分钟,单位不同不能直接相减,所以需要进行单位换算,统一单位,然后进行计算。
具体的做法,就是将统一将时间转换为分钟数,如果结束时间大于起始时间,就进行相减,然后再将结果转换成小时和分钟。
四.编程实现
根据前面的思路分析,我们可以分2步来编写程序:
- 获取起始时间和结束时间
- 计算游泳时间
1. 获取起始时间和结束时间
起始时间和结束时间都是由小时和分钟组成的,为了方便,先创建4个变量,分别命名为”开始小时“、”开始分钟“、”结束小时“和”结束分钟“,然后使用问答指令,获取玩家输入的时间,代码如下:
![图片[5]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-234.png)
2. 计算游泳时间
接下来就需要换算时间,统一单位,这是本题的核心算法。为了方便,可以创建一个变量”总分钟数“,用于保存开始时间和结束时间相差的总分钟数,代码也比较简单,就是将小时乘以60,再加上分钟数,然后相减,代码如下:
![图片[6]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-235-1024x175.png)
对于计算得到的总分钟数,可能会出现两种情况,一是小于0,这说明你输入的结束时间早于开始时间,小鱼教练要给出输入错误的提示;二是大于0,此时则需要将总分钟数再转换成小时和分钟,然后组成一句完整的话,反馈给玩家,这部分的代码如下:
![图片[7]-scratch计算游泳时间_第10届蓝桥杯scratch省赛真题解析教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/03/image-236-1024x432.png)
为了方便,这里创建了两个变量,分别是”小时“和”分钟“,如果总分钟数 > 0,就说出小时和分钟,不过需要使用连接运算符,连接成一句完整的话。
将总分钟数转换成小时和分钟,这里用到了数学中的余数知识,整数部分就是小时数,而小数部分则是分钟数。
将上面的3段代码连在一起,程序就可以正常工作了。
五.总结与思考
本题难度系数为4,积木块数量在42个左右,涉及到的知识点主要包括:
- Scratch问答指令,包括询问并等待和回答指令;
- 变量的使用;
- 运算指令,包括加减乘除和求余数;
- 字符串连接运算符,尤其是多个字符的连接
- 双分支条件指令的使用
- 小时和分钟的换算关系。
本题的代码量不多,但涉及到的数学知识不少,尤其是小时和分钟之间的换算关系,涉及了加减乘除和求余数等常见运算,正所谓编程和数学不分家。我们常说,生活中处处是数学,编程何尝不是如此呢!
需要素材和源代码的,可以转到这里,小鱼教练-2019.3.24蓝桥杯省赛第3题。
暂无评论内容