对出四则运算程序升级的设计思想

    上次的设计思想是先生成三个随机数,两个数是操作数,第三个控制乘除加减的选择。

    这次同样是生成几个随机数,但需要设置一些判断条件,来满足用户出题要求,写一个出题函数,根据用户要求改变其中的变量,循环调用这个函数出题。

     一、题目避免重复

    因为随机函数是伪随机,只是一个函数,所以只需保证不与上次出的题相同即可。

     方法一、把前面生成的题目存到三个数组,以后依次比较。

     方法二、控制选择随机产生的第几个数(如前30,再30个等),或控制srand函数的值,是之每次都不同,即可保证随机产生的数不同。

     二、可定制(数量/打印方式)

     循环变量由用户输入,确定数量,打印方式由变量控制,由用户输入,操作数数量有用户输入(在选择有无括号)

     三、可以控制下列参数:是否有乘除法、是否有括号、数值范围、加减有无负数、除法有无余数、是否支持分数(真分数,假分数,…)、是否支持小数(精确到多少位)、打印中每行的间隔可调整。

     所有参数一个数组,统一设置内容,每次都由用户输入来设置,然后根据数组的值设置调用的出题函数的参数,来出题。

     乘除只需在加减乘除上加两个运算即可。

     括号必须是有三个及以上操作数才能有,否则报错,可固定在第二个操作数前和最后面加括号。

     数值范围可以用改变随机数,用1+(int)(范围最大值*rand()/(RAND_MAX+1.0))来改变。

     加减有无负数可用随机在操作数前加负号。

     除法有无余数可以当随机到除号时对出号第二个操作数循环减一知道成为第一个操作数的除数。

    是否支持分数可以把两个操作数通过分号合成一个操作数。

    是否支持小数精确到多少位可以改变1+(int)(范围最大值*rand()/(RAND_MAX+1.0))使之除以小数位数乘10即可。

    打印中每行间隔可以单独设一个输出来输出间隔。

 

posted @ 2015-03-10 12:57  weaponX  阅读(127)  评论(0编辑  收藏  举报