我截的图不完全(请自行补充)
1.确定这次题目的个数和范围,以及得到4个随机数(补充:1.鄙人能力有限只能到达整数和分数,真分数确实不会2.我直接来4个是为了之后我分了3种类都可以使用计算方便,各位也可以根据不同的类别定义分别定义2,3,4个随机数)
2.我用3个元素的数组定义了符号位,每个元素范围是0到3,数字代替算术运算符(补充:为防止出现/号后面有0的情况我做了一个循环),最后我定义了一个数组(也就是你看到的h数组),他长这样(元素,运算符,元素,运算符,元素,运算符,元素,0,0)(后面的0,0,与算法无关只是为了改进一个特殊情况,将在下文说明)
3.最关键的如何让计算机计算函数的答案(我以3个运算符为例子(本质上可以计算n个运算符))
4.第一步算乘除:首先打印题目让玩家可以计算answer,并且先找到2元运算符*,/;在让符号两边的元素进行相应的计算;算完后让前一个数为0后一个数为这次计算的答案(我在第三步算加减时是从左往右计算的,把不是减法的都加起来);接着找下一个2元运算符。(我有个表达错误,我们最后的答案不是这个result,而是计算完第二三步后的result的,你可以用temp代替这里的result,但是这个表达错误不影响结果(所以我不改正))
5.第二步解决特殊情况:如果在进行一次连续的*或/前的符号是减号,我们就应该交换,那交换那个,如何判断,请看图