• 计算游泳时间-第10届蓝桥杯Scratch省赛真题第3题


    [导读]:超平老师计划推出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♪(・ω・)ノ。

  • 相关阅读:
    15. 最少词项聚合
    Mybatis的介绍及使用
    [C题]2023 年全国大学生数学建模比赛思路、代码更新中.....
    MFC list control控件数据修改
    2023-10 字节跳动面试整个过程 golang营销服务开发岗位
    NH2-PEG-MAL 氨基PEG马来酰亚胺
    cdn与云服务器有什么区别
    springcloud+nacos+gateway+oauth2小聚会
    线程的几种状态
    驾驭Scala的网络之力:HTTP客户端与服务器实战指南
  • 原文地址:https://blog.csdn.net/diamondwang2012/article/details/127685822