设计思想:
1、首先定义一个类在类中用一个函数来表示一次随机产生一个运算式。
2、定义两个整型随机数作为运算符号两边的数值,再定义4个随机数来分别表示四则运算符号,再定义两个随机数来表示是整数还是分数。
3、进行整数的随机四则运算,通过switch case语句实现(当运算符号为除法时判定分母是否为零)。
4、再进行有真分数的四则运算,同样通过switch case语句实现(分数的分母不能为零,真分数分母大于分子)
5、最后在循环里调用上述函数
源程序代码:
1 class Q{ 2 public void display() 3 { 4 //随机生成需要的数据 5 int a = (int)(Math.random() * 100);//随机产生0到100的整数 6 int b = (int)(Math.random() * 100);//随机产生0到100的整数 7 int c = (int)(Math.random() * 4);//0为加,1为减,2为乘,3为除 8 int d = (int)(Math.random()*2);//0为整数,1为分数 9 String fuhao = new String(); 10 //符号的判定 11 if(c==0) fuhao="+"; 12 if(c==1) fuhao="-"; 13 if(c==2) fuhao="*"; 14 if(c==3) fuhao="/"; 15 if(d==0)//整数的运算 16 { 17 switch(c) 18 { 19 case 0: 20 System.out.println(a+fuhao+b+"="); 21 break; 22 case 1: 23 System.out.println(a+fuhao+b+"="); 24 break; 25 case 2: 26 System.out.println(a+fuhao+b+"="); 27 break; 28 case 3: 29 if(b==0) 30 { 31 int b1 = 1+(int)(Math.random() * 100); 32 System.out.println(a+fuhao+b1+"="); 33 } 34 else 35 { 36 System.out.println(a+fuhao+b+"="); 37 } 38 break; 39 default: 40 System.out.println("Wrong!"); 41 } 42 } 43 if(d==1)//分数的运算 44 { 45 int a1 = 1+(int)(Math.random() * 100); 46 int a2 = 1+(int)(Math.random() * 100); 47 int b1 = 1+(int)(Math.random() * 100); 48 int b2 = 1+(int)(Math.random() * 100); 49 int aa,bb; 50 String Q1=new String(); 51 String Q2=new String(); 52 int d1 = (int)(Math.random()*2); 53 int d2 = (int)(Math.random()*2); 54 if(d1==1)//第一个数为分数 55 { 56 aa=a1; 57 bb=b1; 58 if(aa>=bb)//真分数的判定 59 { 60 Q1="("+bb+"/"+aa+")"; 61 } 62 else 63 { 64 Q1="("+aa+"/"+bb+")"; 65 } 66 } 67 else//d1==0,第一个数为整数 68 { 69 Q1=a+""; 70 } 71 if(d2==1)//第二个分数 72 { 73 aa=a2; 74 bb=b2; 75 if(aa>=bb)//真分数的判定 76 { 77 Q2="("+bb+"/"+aa+")"; 78 } 79 else 80 { 81 Q2="("+aa+"/"+bb+")"; 82 } 83 } 84 else//d2==0,第二个数为整数 85 { 86 Q2=b+""; 87 } 88 switch(c) 89 { 90 case 0: 91 System.out.println(Q1+fuhao+Q2+"="); 92 break; 93 case 1: 94 System.out.println(Q1+fuhao+Q2+"="); 95 break; 96 case 2: 97 System.out.println(Q1+fuhao+Q2+"="); 98 break; 99 case 3: 100 System.out.println(Q1+fuhao+Q2+"="); 101 break; 102 default: 103 System.out.println("wrong!"); 104 } 105 } 106 } 107 } 108 public class SiZe { 109 public static void main(String[] args) { 110 for(int i=1;i<=30;i++)//循环30次即为30道题 111 { 112 Q W = new Q(); 113 System.out.println("第"+i+"题"); 114 W.display(); 115 } 116 } 117 }
运行结果截图:
未按时完成的原因:不清楚真分数怎么随机产生并且表示出来。