加油问题-第10届蓝桥杯Scratch国赛真题第5题

本文同步发表于”超平的编程课“公众号,更多教程,可移步至公众号。

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第18讲。

第10届蓝桥杯青少年组国赛于2019年5月25日举行,形式为线下考试,考生自带电脑。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

加油问题,本题是第10届蓝桥杯scratch国赛真题编程部分的第5题,题目要求考试编程计算出摩托车在骑行路过加油站时,选择最佳的加油方案。

先来看看题目的要求吧。

一.题目说明

编程实现:

小猫打算在“五一”假期骑摩托车自驾游,摩托车每次加满油后可以行驶100公里,它在自家附近的加油站加满油后就上路了,上路之后还要顺序经过“1号”-“6号”的6个加油站,每个加油站到上一个加油站的距离分别是50、80、39、60、40、32公里。因为“五一”期间各加油站都有很多车要加油,所以小猫希望尽量减少加油的次数。请帮助小猫找出在哪些加油站停靠加油(每次都加满油)才能使得沿途加油次数最少。

注意:如果摩托车剩下的油不够行驶到下一个加油站时,就必须要在这个加油路加油了!

具体要求:

1). 创建两个列表,列表“距离”用于存放各个加油站距离的数值,将50、80、39、60、40、32依次添加到列表中;列表“停靠”有6个元素,用于标记在哪个加油站停靠加油。每次点击绿旗时,都要将“停靠”列表中的6个元素初始化为“0”,然后让小猫说“开始出发”2秒。如图1所示:

图1

图1

2). 小猫需要指出应该在哪个加油站停靠加油。例如,小猫需要在第1个加油站加油(因为到第2个加油站还有80公里,而摩托车的油只够再骑50公里了),就让小猫说“在1号加油站停靠加油”2秒,同时将“停靠”列表中的第1个元素值修改为1,然后继续说出下一个需要加油的加油站(见图2),当到达目的地时,让小猫说“到达目的地”2秒,然后程序结束。

图2

赛后判卷时,在裁判修改了列表“距离”中的数值以后,重新点击绿旗后,能够以新的数值重新计算,并让小猫说出合理的停靠加油方案,使得加油的次数最少。

评判标准:

  • 10分:符合具体要求1),即点击绿旗后“距离”列表中的各元素依次是50、80、39、0、40、32,“停靠”列表中的各元素值都是0,小猫说“开始出发”2秒;

  • 30分:在10分标准的基础上,符合具体要求2),即小猫正确说出在哪个加油站加油,并且在说出“到达目的地”后,“停靠”列表的每一个数值均正确;

  • 60分:在30分标准的基础上,符合具体要求3)。即赛后判卷时,在裁判修改“距离”的数值后,能够以新的数值计算新的停靠加油方案,使得加油的次数最少。

二.思路分析

本题的逻辑其实很简单,就是每到一个加油站,都需要判断摩托车里剩余的油能否确保行驶到下一个加油站,如果够的话,就不用加油,继续行驶,否则的话,就需要在这一站加油。

很显然,除了题目给出的两个列表,我们需要使用两个变量,一个用来表示几号加油站,从第1站开始直到第6站,另一个则是剩余油量,这是我们判断是否加油的重要条件。

三.编程实现

根据上述思路分析,我们分两步来编写程序:

  • 列表和变量的初始化

  • 循环判断

  • 完善逻辑

1. 列表和变量的初始化

根据题目描述,这里有两个列表,一个表示加油站,一个表示是否停靠加油,先创建好两个列表,并向列表中添加好数据。同时,创建两个变量,分别命名为”加油站“和”剩余油量“,并将初始值分别设为1和100。

为了增强代码的可读性,我们可以将这部分代码定义到一个自制积木,如图所示:

有的同学可能会有疑问,直接在列表中加入数据不就行了么,为什么还要使用代码的方式呢?

这么做的好处就在于,任何时候,只要点击绿旗,就可以确保数据是正确的,你再也不用担心由于误操作导致列表数据被修改了。

2. 循环判断

接下来,就可以从第1个加油站开始判断了,不过需要注意的是,小猫出发的时候,是加满了油的,此时的油量是100公里,当到达第一站的时候,需要先减去到第一站的距离,从而得到新的剩余油量,然后再判断是否能到达下一站,这部分的代码如图所示:

对于这段代码,简单说明如下:

1). 这里的重复条件是”加油站 > 5“,也就是只判断前面5个加油站,第6个加油站无需判断,因为这是列表的最后一项,可以认为是到达终点了。

2). 每到一个加油站,我们需要先计算出当前剩余油量,接着再判断是否能到下一站,所以这里的判断条件是”剩余油量 < 距离的第加油站 + 1 项“。

3). 如果在本站加油,就需要将停靠列表中对应项的值修改为1,同时将剩余油量设置为100,表示加满油了。

3. 完善逻辑

对于当前给出的列表数据,上面的代码完全ok,如果我们修改列表中的数据,比如将第一项数据50改成110,会出现什么情况呢?

很显然,一旦距离超过100公里,摩托车就无法到达,针对这种情况,可以增加一个判断,让程序停止下来,代码也比较简单,如下:

将这个代码放到”重复执行直到“指令中就可以了,注意要放到最前面。

四.总结与思考

本题代码不多,一共40个积木块左右,涉及到的知识点包括:

  • 列表的操作,包括删除、添加和修改数据等常见操作;

  • 直到循环的使用;

  • 运算符的综合使用,包括算术运算符、比较运算符和字符串连接运算符;

  • 自制积木的应用。

本题所描述的场景在我们日常生活中十分常见,这不仅是数学在生活中的体现,也是编程在生活中的应用。由于本题给出的数据量比较小,所以感觉不到程序的优势,如果数据量增加100倍,你就能体会到程序的强大之处了。

人们常说”艺术源于生活而高于生活“,编程也是如此。所以,我们在学习编程时,也要善于观察生活、体验生活,将生活和编程结合起来,这样你就可以更好的理解和运用编程了,同时能更好地体会编程的魅力。

需要素材和源码的,可以联系本人,或者移步至”超平的编程课“公众号。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 青少组蓝桥杯scratch国赛真题是面向青少年参赛的一个编程竞赛。蓝桥杯是中国最大的国家级高校计算机竞赛,它旨在激发青少年对计算机科学的兴趣和热情。 该比赛要求参赛者使用Scratch这个简单易学的编程语言来完成编程任务。Scratch是一种图形编程环境,可以通过拖拽图形块来编写程序。它不需要掌握复杂的语法和编程知识,非常适合初学者。 蓝桥杯青少组的Scratch真题通常涵盖各种主,如游戏设计、动画制作和创意编程等。参赛者需要根据目要求设计和完成一个创意的项目,同时需考虑实现的难度和创新性。 在比赛中,参赛者需要展示他们在程序设计、逻辑思维和创作能力方面的才能。不仅需要完成项目的基本要求,还需要有独特的创意和技术上的突破。 蓝桥杯Scratch国赛真题是通过评委进行评分的,评分标准包括功能完整性、创新性、用户体验和代码质量等。评委会根据项目的表现和解决问题的方法来评定参赛者的成绩。 通过参与蓝桥杯青少组的Scratch国赛,青少年可以锻炼他们的编程技能和创造力,增加对计算机科学的兴趣与了解。这项比赛为他们提供了一个展示自己创意和才华的平台,同时也能为参赛者带来学习和成长的机会。 ### 回答2: 青少组蓝桥杯是中国青少年计算机编程竞赛的一个分支,以挖掘和培养青少年计算机编程潜力为目标。蓝桥杯scratch国赛是该组别中一个重要的赛事,其中使用了Scratch编程语言。 Scratch是麻省理工学院开发的一种图形化编程语言,适合初学者入门。蓝桥杯scratch国赛真题主要考察参赛选手的Scratch编程能力和创造力。根据往年比赛目,这些真题通常涉及动画制作、游戏设计和问题求解等方面。 选手在参赛前,首先需要了解Scratch语言的基本知识和操作方法。比赛中,选手需要根据目要求,在Scratch平台上进行编程创作。他们会利用Scratch提供的图形化积木,完成任务的实现。这些任务可能要求设计一个动画、制作一个游戏,甚至是解决某个实际问题。 参赛选手需要熟悉Scratch的各类积木,如控制积木、事件积木、运算积木等,才能准确表达创意,完成任务要求。同时,他们还需要具备逻辑思维和创新能力,能够在限定的时间内进行快速设计和开发。 参加蓝桥杯scratch国赛有助于培养青少年的计算机编程兴趣和能力。这项比赛为他们提供了一个展示自己创意和才华的舞台。而通过参与比赛,他们还能通过与其他优秀选手交流学习,提升自己的编程水平。 总之,青少组蓝桥杯scratch国赛真题要求选手在Scratch平台上进行编程创作,并展示他们的创造力和解决问题的能力。这项赛事不仅是一种竞赛形式,更是促进计算机编程教育普及和青少年创意能力培养的重要活动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值