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 、定制数值范围(确定操作数的取值范围)
浙公网安备 33010602011771号