四则运算一

像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量

 设计思想:主要是随机的式子如何产生问题,和对产生的随机数的不同限制,题目避免重复的问题

建立一个式子类来对上述要求进行回应:

主要代码:

  class Zhengshu//整数类
    {
    String re1="";//初始化 “结果” String类型的
    int re;
    String function(int r ,int q, int fun)// r最小值,q最大值,fun 选择
    {
        //1有乘除法 2加减无负数 3除法无余数(12,1,0)
        String fu ="";
        String shizi="";
        int a=(int)(Math.random()*(r)%(r-q+1)+q);
        int b=(int)(Math.random()*(r)%(r-q+1)+q);
        int c=(int)(Math.random()*4);
        if(fun==1)
        {
            if(c==0)
            {
             while(a+b>100){
                    a=(int)(Math.random()*(r)%(r-q+1)+q);
                    b=(int)(Math.random()*(r)%(r-q+1)+q);
                }
                fu="+";
                shizi=a+" "+fu+" "+b;
                re=a+b;
                re1=String.valueOf(re);
            }
            if(c==1)
            {    
                fu="-";
                //排除负数可能性
                while(a-b<0)
                {
                    a=(int)(Math.random()*(r)%(r-q+1)+q);
                    b=(int)(Math.random()*(r)%(r-q+1)+q);
                }
                shizi=a+" "+fu+" "+b;
                re=a-b;
                re1=String.valueOf(re);
            }
            if(c==2)
            {
            while(a>10||b>10){
                    a=(int)(Math.random()*(r)%(r-q+1)+q);
                    b=(int)(Math.random()*(r)%(r-q+1)+q);
                }
                fu="×";
                shizi=a+" "+fu+" "+b;
                re=a*b;
                re1=String.valueOf(re);
            }
            if(c==3)
            {
            while(a>10||b>10){
                    a=(int)(Math.random()*(r)%(r-q+1)+q);
                    b=(int)(Math.random()*(r)%(r-q+1)+q);
                }
                fu="÷";
                //排除分母为0的可能性和余数的可能性
                while(b==0||a==0)
                {
                    a=(int)(Math.random()*(r)%(r-q+1)+q);
                    b=(int)(Math.random()*(r)%(r-q+1)+q);
                }   
                re=a;
                shizi=a*b+" "+fu+" "+b;
                re1=String.valueOf(re);
            }
        }
            return shizi;//返回字符串
    }
    }

 for(int j=0;j<geshu;j++)
    {
 
        Array[i]=a.function(100,1,1);//返回第一个字符串(字符串)
       
        /*if(i>0)//不满足条件,i的初值为零
        {
            for(int z=0;z<i;z++)
            {
                if((Array[z].equals(Array[i])))
                {
                    Array[i]=a.function(100,1,1);
                    z=-1;
                }   
            }
        }*/
 
        //out.println(i+1+": "+Array[i]+" = "+'\n'); //输出i+1表示第几道题;输出表达式加上“=”  
        
        %>

运行结果截图:

个人上课未完成的原因:

  1.在生成规定的表达式时遇到了困难没有及时的解决

2.多种情况考虑不周

    

        

转载于:https://www.cnblogs.com/1605-3QYL/p/8258916.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值