何廣林
本題來自2021年NOC創新編程復賽操作題。阿短是一位小學五年級學生,本學期即將結束,阿短打算創作一個能夠進行四則運算練習的出題程序。程序能夠隨機出10道題,題目皆是一位數的加減乘除四則運算,每答對一題得1分。請你幫助阿短,編寫出這個程序吧。
1.參與運算的兩個數值都是從0到9之間隨機獲取,運算符是從“+”、“-”、“*”、“/”中隨機產生,并作為詢問的內容,如題干配圖所示;
2.在要求1的基礎上進一步對數值做出限制,如果運算符為“-”,那么要求被減數不小于減數;如果運算符為“/”,那么除數不得為0;
3.程序對隨機生成的算式進行運算,并對結果進行四舍五入取整。如果用戶輸入答案與結果相等,那么說出“回答正確”,然后將得分增加1分;否則說出“回答錯誤”;
4.程序總共隨機生成10道題目(圖1)。

1.在計算機中,“*”表示乘法運算,等同于數學中“×”; “/”表示除法運算,等同于數學中“÷”;
2.對于除法運算,要求除數不得為0,對于結果為小數的情況,進行四舍五入取整;
3.小學數學大綱中不涉及負數運算,所以在進行減法運算時,要求被減數不小于減數。
1.首先明確怎么去定義函數和調用自定義函數,確定新建“變量”項目;
2.分別編寫“加、減、乘、除”4個自定義函數子程序;
3.確定“加、減、乘、除”4個運算符號,并將其添加入“運算符號”列表中;
4.根據列表“運算符號”中隨機出現的“符號”,調用相應的函數“子程序”出題。
(一)添加或導入一角色,背景為白色。添加如圖2中的全局變量和列表(圖2)。

(二)編寫“加、減、乘、除”各函數子程序。
1.自定義“加法”函數,添加參數“加數1”和“加數2”。程序如圖3。

2.自定義 “減法”函數,增加參數“減數1、減數2”,因為小學數學大綱中不涉及負數運算,在進行減法運算時,要求被減數不小于減數,所以設置條件“數1≥數2”(圖4)。

3.自定義 “乘法”函數,增加參數“乘數1、乘數2”(圖5)。

4. 自定義 “除法”函數,增加參數“被除數1、除數2”。在計算中因為除數不得為0,所以設置條件 “數2≠0”(圖6)。

(三)搭建“+、-、*、/”插入到“運算符號”列表程序(圖7)。

(四)搭建隨機出題主程序。
因為需要根據出現的運算符號來調用相應的函數子程序,總題數是10,所以選擇“重復執行(10)次”和“如果——否則”積木。程序搭建如圖8。


測試程序,檢查運行效果是否符合題目要求。
本題中首先是根據題意設計程序運行的基本框架流程,確定新建“變量”的項目和“列表”;其次利用自定義函數定義“加、減、乘、除”各運算子程序,再根據題中的相關要求設定相應的條件;最后根據“運算符號”列表中隨機出現的運算符,對等地調用“加、減、乘、除”各子程序。