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

本文介绍了一种基于用户需求的随机数学题生成方法。该方法可通过设置参数来自定义题目类型,包括加减乘除、括号使用、数值范围等,并确保题目不重复。此外,还介绍了如何控制出题数量及打印格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

     一、题目避免重复

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

转载于:https://www.cnblogs.com/weaponx/p/4325695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值