四则运算一

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

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

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

主要代码:

  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]+" = "+' '); //输出i+1表示第几道题;输出表达式加上“=”  
        
        %>

运行结果截图:

个人上课未完成的原因:

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

2.多种情况考虑不周

    

        

原文地址:https://www.cnblogs.com/1605-3QYL/p/8258916.html