题目要求:
像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。
要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、
题目避免重复、可定制出题的数量。
(有能力者改编成网页版)
程序设计思想:首先设置四个随机数,分别为分子和分母,通过分子是否可以整除分子判断出这个数是否为整数,通过分子小于分母控制生成的真分数。
再生成一个1-4的随机数,分别代表四则运算的四个运算符号,从而生出完整的运算题目。
最后通过数组实现查重功能,定义一个string类型的q1赋值成运算题目,进去数组,在数组中进行比较查看是否重复。
代码如下:
package si; import java.util.Scanner; public class yunsuan { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入出题数量:"); Scanner num=new Scanner(System.in); int n = num.nextInt(); //这个数组是用来存放已经出好的题 String timu[]=new String [n]; for(int i=0;i<n;i++) { int z1,z2;//用来判断是整数还是真分数 int x1=(int)(Math.random()*100);//分子 int y1=(int)(Math.random()*100+1);//分母 z1=x1/y1; int x2=(int)(Math.random()*100);//分子 int y2=(int)(Math.random()*100+1);//分母 z2=x2/y2; if((x1%y1==0)&&(x2%y2==0)) { int a=(int)(Math.random() * 4);//用来判断四则运算的符号 String q1=""; if(a==3&&z2==0) i--; else{ if(a==0) q1=z1+"+"+z2+"="; if(a==1) q1=z1+"-"+z2+"="; if(a==2) q1=z1+"*"+z2+"="; if(a==3&&(z2!=0)) q1=z1+"/"+z2+"="; int j; for(j=0;j<i;j++) { if(q1.equals(timu[j])) { i--; break; } } if(j==i){ timu[i]=q1; System.out.println(q1);} } } else if((x1<y1)&&(x2%y2==0)&&x1!=0) { String q1=""; int a=(int)(Math.random() * 4);//用来判断四则运算的符号 if(x2==0&&a==3) i--; else{ if(a==0) q1=x1+"/"+y1+"+"+z2+"="; if(a==1) q1=x1+"/"+y1+"-"+z2+"="; if(a==2) q1="("+x1+"/"+y1+")"+"*"+z2+"="; if(a==3&&(z2!=0)) q1="("+x1+"/"+y1+")"+"/"+z2+"="; int j; for(j=0;j<i;j++) { if(q1.equals(timu[j])) { i--; break; } } if(j==i){ timu[i]=q1; System.out.println(q1);} } } else if((x1%y1==0)&&(x2<y2)) { String q1=""; int a=(int)(Math.random() * 4);//用来判断四则运算的符号 if(x2==0&&a==3) i--; else{ if(a==0) q1=z1+"+"+x2+"/"+y2+"="; if(a==1) q1=z1+"-"+x2+"/"+y2+"="; if(a==2) q1=z1+"*"+"("+x2+"/"+y2+")"+"="; if(a==3&&(z2!=0)) q1=z1+"/"+"("+x2+"/"+y2+")"+"="; int j; for(j=0;j<i;j++) { if(q1.equals(timu[j])) { i--; break; } } if(j==i){ timu[i]=q1; System.out.println(q1);} } } else if((x1<y1)&&(x2<y2)&&x1!=0) { String q1=""; int a=(int)(Math.random() * 4);//用来判断四则运算的符号 if(x2==0&&a==3) i--; else{ if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"="; if(a==1) q1=x1+"/"+y1+"-"+x2+"/"+y2+"="; if(a==2) q1="("+x1+"/"+y1+")"+"*"+"("+x2+"/"+y2+")"+"="; if(a==3&&(z2!=0)) q1="("+x1+"/"+y1+")"+"/"+"("+x2+"/"+y2+")"+"="; int j; for(j=0;j<i;j++) { if(q1.equals(timu[j])) { i--; break; } } if(j==i){ timu[i]=q1; System.out.println(q1);} } } else i--; } } }
运行截图: