软件工程个人作业01

题目:能自动生成小学生四则运算题目,要求:

除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。(有能力者改编成网页版)

程序设计思想:用产生随机数的方法随机产生运算的数字和运算符,分数运算则用四个随机数分别表示分子和分母;由用户输入题目个数,即产生随机数的循环次数;在产生随机数时限制即可保证题目正确性;要保证题目不重复,则要将产生的随机数保存在起来,将新产生的与以保存的比较,若完全相同则跳过,循环次数加一。

源程序代码:

//四则运算,差不为负,真分数运算,定制出题数量,验证结果正确性
//没有完成避免题目重复的部分
import java.util.Scanner;
public class Yunsuan {
    public static void main(String[] args) {
        System.out.println("请输入需要的题目数量(最大数目为1000):");
        Scanner number=new Scanner(System.in);
        int n=number.nextInt();
        yunsuan(n);
    }
    public static int random(int n){     //n为随机数个数
        int value=1+(int)(Math.random()*n);//随机数最小为1
        return value;
    }
    public  static void yunsuan(int m){
        int value1,value2,value3,value4,y;
        String result="",result2="";
        String ysf=null;
        for(int i=0;i<m;i++)
        {
            //取随机数
            value1=random(100);
            value2=random(100);
            value3=random(100);
            value4=random(100);
            y=random(4);     //运算符
            if(y==1) ysf="+";
            else if(y==2) ysf="-";
            else if(y==3) ysf="*";
            else if(y==4) ysf="/";
            if((value1%value2!=0&&value1<value2&&value3<value4)||(value1<value2&&value3<value4&&value3%value4!=0))  //真分数运算
            {
                result2=value1+"/"+value2+" "+ysf+" "+value3+"/"+value4+" =";
                System.out.println(result2);           
            }                 
           //整数运算
            else
            {                
                if(y==2&&value1>value2)
                {
                   result=value1+" "+ysf+" "+value2+" =";
                   System.out.println(result);
                }
                else m++;
            }
                         
        }    
    }
}

程序还有不完整的地发,不能实现最简分数,不能进行题目查重。

运行结果截图:

上课时其实代码写完了,但是不能用于后续添加功能,因为上课时开始的代码是这样的:

public class Test {
    public static void main(String[] args) {
        //产生100以内随机数        
        //产生运算符号
        //产生100以内随机数
        for(int i = 0 ; i < 30 ; i ++)
        {
            //产生随机数
            int value =1+(int)(Math.random() *100 );  //1-100
            int value2=1+(int)(Math.random()*4);      //1-4
            int value1=1+(int)(Math.random()*100);    //1-100
            //输出
            //第一个数字
            System.out.print(value+" ");                  
            //运算符号
            if(value2==1)System.out.print("+");
            else if(value2==2)System.out.print("-");
            else if(value2==3)System.out.print("*");
            else if(value2==4)System.out.print("/");
            //第二个数字
            System.out.println(" "+value1+" "+"=");   
       }                
    }
}

于是又重写了一个,但是没有完成。

原文地址:https://www.cnblogs.com/chen160340/p/6505897.html