2021/9/23-出题器 第一版

package sizeyunsuan;
import java.util.Scanner;

public class chutiqi {

    public static void ti(int number,int num,int min,int max,int c,char k)
    {
        char[] fu= {'+','-','*','/'};
        int random;
        char b;
        
        if(k=='Y')
        {
            int o=0;
            int temp;
            int[] shizi=new int[num*2+1];
            int[] bound1=new int[num-1];
            int[] bound2=new int[num-1];
        for(int i=0;i<number;i++)
        {
            for(int p=0;p<num;p++)
            {
                o=o+2;
                bound1[p]=o;
            }
            int left=bound1[(int)(Math.random()*((num-1)-0)+0)];
            
            for(int p=0;p<num;p++)
            {
                o=left+3;
                bound2[p]=o;
                o=o+2;
            }
            int right=bound2[(int)(Math.random()*((num-1)-0)+0)];
            
            if(left>right)
            {
                temp=left;
                left=right;
                right=temp;
            }
            
                for(int m=0;m<num*2-1;m++)
                {
                    if(m%2==0)
                    {
                        random=(int)(Math.random()*(max-min)+min);
                        shizi[m]=random;
                    }
                    else if(m%2==1)
                    {
                        random=(int)(Math.random()*(c));
                        shizi[m]=(int)(fu[random]);
                    }
                }
                
                for(int a=shizi.length;a>=0;a--)
                {

                            if(a==right)
                            {
                                shizi[a-1]=shizi[a-2];
                                System.out.print(")");
                            }
                            if(a>right)
                            {
                                shizi[a]=shizi[a-1];
                                if(a%2==0)
                                    System.out.print(shizi[a]);
                                else if(a%2==1)
                                {
                                    b=(char)(shizi[a]);
                                    System.out.print(b);
                                }
                            }
                            if(a<right&&a>left)
                            {
                                shizi[a]=shizi[a-1];
                                if((a+1)%2==0)
                                    System.out.print(shizi[a]);
                                else if((a+1)%2==1)
                                {
                                    b=(char)(shizi[a]);
                                    System.out.print(b);
                                }
                            }
                            if(a<left)
                            {
                                if(a%2==0)
                                    System.out.print(shizi[a]);
                                else if(a%2==1)
                                {
                                    b=(char)(shizi[a]);
                                    System.out.print(b);
                                }
                            }
                            if(a==left)
                            {
                                System.out.print("(");
                            }
                        }
                System.out.println("=");
            }
        }
        
        if(k=='N')
        {
        int[] shizi=new int[num*2-1];
        for(int i=0;i<number;i++)
        {
            for(int m=0;m<num*2-1;m++)
            {
                if(m%2==0)
                {
                    random=(int)(Math.random()*(max-min)+min);
                    shizi[m]=random;
                }
                else if(m%2==1)
                {
                    random=(int)(Math.random()*(c-0+0));
                    shizi[m]=(int)(fu[random]);
                }
            }
            for(int a=0;a<shizi.length;a++)
            {
                if(a%2==0)
                    System.out.print(shizi[a]);
                else if(a%2==1)
                {
                    b=(char)(shizi[a]);
                    System.out.print(b);
                }
            }
            System.out.println("=");
        }
        }
    }
    public static void main(String[] args) 
    {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入出题数量");
        int number=input.nextInt();                         //题目数量
        System.out.println("请选择操作数的个数");
        int num=input.nextInt();                            //操作数的个数
        System.out.println("请输入操作数最小值");
        int min=input.nextInt();                            //定制范围最小值
        System.out.println("请输入操作数最大值");
        int max=input.nextInt();                            //定制范围最大值
        System.out.println("是否有乘除法:是选择2/否选择0");
        int c=input.nextInt();                              //是否有乘除法
        c=c+2;
        System.out.println("是否有括号:Y/N");
        char k=input.next().charAt(0);                      //是否有括号
        ti(number,num,min,max,c,k);
        input.close();
    }
    

}

1、题目避免重复;2、可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地; 3、定制操作数的个数: 4、定制是否有乘除法 5、定制是否有括号(随机加入) 6 、定制数值范围(确定操作数的取值范围)

posted @ 2021-09-23 23:13  _Pi  阅读(93)  评论(0)    收藏  举报