2021年NOC复赛真题解析
2021-01-06何广林
何广林
本题来自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。
测试程序,检查运行效果是否符合题目要求。
本题中首先是根据题意设计程序运行的基本框架流程,确定新建“变量”的项目和“列表”;其次利用自定义函数定义“加、减、乘、除”各运算子程序,再根据题中的相关要求设定相应的条件;最后根据“运算符号”列表中随机出现的运算符,对等地调用“加、减、乘、除”各子程序。