博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业二:生成四则运算和二元一次方程
阅读量:5308 次
发布时间:2019-06-14

本文共 4303 字,大约阅读时间需要 14 分钟。

生成四则运算所用方法类似生成二叉树的方法递归添加。直接上代码!

public class 四则运算 {    public static String str = "";//保存题目的字符串    public static int num = 5;//每题中数的个数    public static int num_i = 0;//题目中已有数的个数        public static int numberRange = 100;//运算中数的最大取值        public static double sum = 0;//记录结果        public static void main(String[] args) {        for (int i = 0; i < 50; i++) {                        GetQuestion();            System.out.print(i+1);            System.out.print(". " + str + "                ");            System.out.print(sum);            System.out.print("        ");            System.out.println();                  }    }    public static double jisuan(double sum,char fu[],int w,int t){        if(fu[(int)(Math.random()*4)]=='+'){                sum+=w;                    }        if(fu[(int)(Math.random()*4)]=='-'){            if(t>50){                            sum+=w;            }else{                w-=sum;            }        }        if(fu[(int)(Math.random()*4)]=='*'){            sum*=w;                }        if(fu[(int)(Math.random()*4)]=='/'){            if(t>50){                            sum/=w;            }else{                w/=sum;            }                }        return sum;    }    private static void GetQuestion() {        //得到问题函数,在这里调用递归函数quesGrow()。        str = "";        sum=0;        num_i = num;//用前都清零        quesGrow();    }    private static void quesGrow() {        char fu[]={'+','-','*','/'};        //        if( num_i > 1 ) {            int j = num_i;//记录这是第几层调用。            num_i--;            quesGrow();//递归                        int w=1+(int)(Math.random()*numberRange);//随机生成一个数            int t=1+(int)(Math.random()*100);//向左生成,还是向右生成,类似于树。            int f=1+(int)(Math.random()*100);//运算符控制                        if(t>50)//新数往右加            {                if(f>50) {                        sum=jisuan(sum,fu,w,t);                    str = str + fu[(int)(Math.random()*4)] + String.valueOf( w );                }                else {                    sum=jisuan(sum,fu,w,t);                    str = str + fu[(int)(Math.random()*4)] + String.valueOf( w );                        }            }            else//否则 新数往左加            {                if(f>50) {                    sum=jisuan(sum,fu,w,t);                    str = String.valueOf( w ) + fu[(int)(Math.random()*4)] + str;                    }                else {                    if( j < 3 ) {
//3——摸索出的数,不用给自己套上括号。实际上就是j=2 sum=jisuan(sum,fu,w,t); str = String.valueOf( w ) + fu[(int)(Math.random()*4)] + str; } else { sum=jisuan(sum,fu,w,t); str = String.valueOf( w ) + fu[(int)(Math.random()*4)] + "(" +str+ ")"; } } } } else if( num_i == 1 ) { //最后一层,也是输出的第一层 int w=1+(int)(Math.random()*numberRange); str = str + String.valueOf( w ); } }}

生成二元一次方程感觉比上面一个简单~因为并没有把生成的方程组的解算出来~上代码

public class 二元一次方程 {    private static String str="";        public static void main(String[] args) {        int num=2;int j=1;        for(int i=1;i<51;i++){            T();            if(num==2){                            System.out.println(j+".");                j++;                num=0;            }                        System.out.println("y"+"="+str);            num++;        }            }    public static void T(){        str="";        char fu[]={'+','-','*','/'};        int w=(int)(Math.random()*100);        char c= fu[(int)(Math.random()*4)];        str="x"+c+String.valueOf(w);            if(c=='*'||c=='/'){            while(true){                char b=fu[(int)(Math.random()*4)];                if(b=='+'||b=='-'){                    str=str+b+String.valueOf((int)(Math.random()*100));                    break;                }            }        }        if(c=='+'||c=='-'){            while(true){                char b=fu[(int)(Math.random()*4)];                if(b=='*'||b=='/'){                    str='('+str+')'+b+String.valueOf((int)(Math.random()*100));                    break;                }            }        }    }}

 

转载于:https://www.cnblogs.com/zw-blogs/p/5952397.html

你可能感兴趣的文章
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>