天天看點

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

[導讀]:超平老師計劃推出Scratch藍橋杯真題解析100講,這是超平老師解讀Scratch藍橋真題系列的第95講。

藍橋杯選拔賽每一屆都要舉行4~5次,和省賽、國賽相比,題目要簡單不少,再加上篇幅有限,是以我精挑細選了一部分題目進行解讀。

第11屆藍橋杯青少年組第4次選拔賽于2019年12月15日舉行,形式為線下考試。Scratch分為初級組和中級組,其中初級組面向7~10歲孩子,中級組面向11~14歲孩子。

數字遊戲ABCD*E=DCBA,本題是2019年12月15日舉行的第11屆藍橋杯Scratch地區選拔賽真題程式設計第5題,題目要求程式設計實作數字遊戲,找出滿足ABCD*E=DCBA等式的數字組合。

先來看看題目的要求吧。

一.題目說明

程式設計實作:

問題1:已知A、B、C、D、E分别代表0-9之間的數字。由A、B、C、D組成四位數ABCD和DCBA,還要滿足算式:ABCD * E=DCBA(提示:在程式設計語言中“*”代表乘号)。例如1991*1=1991,則在清單1中輸出19911。

請在清單1中按照從小到大的順序輸出所有可能的數字組合。

樣例輸出:

00000

00001

00002

00003

......

問題2:在問題1的基礎上,現在要求數字A、B、C、D、E均不相同,在清單2中輸出這樣的數字組合。

具體要求:

步驟1:如下圖,清單放在博士汪的左右兩側,綠旗被點選,清空所有清單,博士汪面向左,說“我要開始計算了!”(2秒);

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

步驟2:清單1開始自動運算。自動運算結束後清單1中顯示所有情況,博士汪要面向清單1的方向(向左即可)說出清單1中一共有多少種情況(2秒);

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

步驟3:清單2開始自動運算,運算結束後清單2中顯示所有情況,博士汪面向清單2的方向(向右即可)說出清單2中一共有多少種情況(2秒),程式結束。

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

将程式儲存在桌面,命名為“5.sb2”。

評判标準:

  • 20分:實作步驟1;
  • 40分:在20分基礎上,實作步驟2;
  • 40分:在60分基礎上,實作步驟3。

二.思路分析

本題隻有1個小狗角色,如圖所示:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

又是一道涉及到枚舉算法的作品,所謂枚舉算法就是将所有問題的可能性一一列舉出來,并判斷是否符合給定條件。

對于枚舉算法,通常需要結合循環來實作,當有多個變量的時候,則需要使用嵌套循環,這裡有A、B、C、D、E五個變量,是以循環的層數有5層。

A、B、C、D、E五個變量的取值範圍都是0到9,然後将它們組成一個五位數,如果滿足ABCD * E = DCBA,則将其加入到清單1中。這裡涉及到将多個一位數組合得到一個多位數的程式設計技巧,在Scratch中,有兩種方法,一是直接使用字元串連接配接運算,二是使用數學運算。

清單2中的資料,則是在清單1的資料中進行二次篩選,要求數字A、B、C、D、E均不相同,我們可以将其拆分成4個條件:

  • A和B、C、D、E都不相等
  • B和C、D、E都不相等
  • C和D、E都不相等
  • D和E不相等

将同時滿足這4個條件的數字組合加入到清單2中即可。

由于代碼比較長,我們可以使用自制積木來簡化代碼結構。

三.程式設計實作

根據題目描述和思路分析,我們可以分3步來編寫程式:

  • 準備工作
  • 使用枚舉循環判斷
  • 說出結果

1. 準備工作

先建立好6個變量,如圖所示:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

建立好兩個清單,如下:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

當綠旗被點選時,先清空清單,并設定好小狗的方向,然後說”我要開始計算了!“,對應的代碼如下:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

2. 使用枚舉循環判斷

接下來, 就需要使用枚舉的算法思想,逐個進行判斷,根據思路分析,繼續編寫代碼如下:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

代碼不難,隻是嵌套的層數比較多,要細心一點,避免寫錯,在最内層的循環中,有一個”判斷條件“的自制積木,它的作用就是對組合出來的數字進行判斷,其定義如下:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

其中,第一個如果指令中的條件就是ABCD * E = DCBA,對于左邊的A、B、C來說,分别表示千位、百位、十位,是以需要分别乘以1000、100、10,然後再進行相加,右邊的也是如此。

接下來的4個如果指令用來判斷A、B、C、D、E各不相同,剛好對應于4思路分析中的4個條件。

3. 說出結果

在循環結束之後,清單1和清單2分别有了各自的資料,按照題目要求直接說出它們的項目數即可,這部分代碼如下:

數字遊戲ABCD*E=DCBA-第11屆藍橋杯Scratch選拔賽真題精選

代碼比較簡單,注意在說完第一句話後,需要将小狗的方向設定為90度,即面向右邊。

四.總結與思考

本題難度系數為7,積木塊數量120個左右 ,涉及到的知識點主要包括:

  • 嵌套循環;
  • 條件嵌套;
  • 枚舉的算法思想及實作方式;
  • 變量和清單的靈活運用;
  • 運算符的運用,包括算術運算、字元串運算和邏輯運算;
  • 自制積木的使用。

本題難度較大,重點是了解枚舉的算法思想及實作方式,所有的枚舉算法都包含循環結構和條件結構,循環的層數取決于變量的個數,變量越多,嵌套的層數也就越深,在編寫程式的時候一定要細心,避免出錯。

如果你覺得文章對你有所幫助,别忘了點贊,你的鼓勵是我堅持繼續寫下去的最大動力,Thanks♪(・ω・)ノ。

繼續閱讀