四则运算1
四则运算1
一、题目:写一个能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。
二、程序设计思想:
通过产生随机数生成百以内的int类型数据,判断是否重复:定义一个String类型数组,将生成的算式保存,每次输出之前先验证是否存在,如果存在则不输出
三、源程序代码:
1 package demo;
2
3 import java.util.*;
4
5 public class Random {
6 @SuppressWarnings("resource")
7 public static void main(String args[])
8 {
9 Scanner sc = new Scanner(System.in);
10 int num;
11 System.out.println("请输入需要生成的个数。");
12 num = sc.nextInt();
13 String[] s = new String[100];//保存已有的运算式
14 int ss = 0;//运算式个数计数
15 char[] ch = new char[4];
16 ch[0] = '+';
17 ch[1] = '-';
18 ch[2] = '*';
19 ch[3] = '/';
20 int a,b,a1,b1;
21 double A,B,A1,B1;
22 int k;
23 String str;
24 int flagA = 0,flagB = 0;//判断是否用真分数。
25 for(int i = 0;i < num;i ++)
26 {
27 flagA = SuiJileixing();
28 flagB = SuiJileixing();
29 if(flagA == 1 && flagB == 1)
30 {
31 a = SuiJi1();
32 b = SuiJi1();
33 k = SuiJiyunsuanfu();
34 str = a + " " + ch[k] + " " + b + " = ";
35 if(Check(s,str,ss) != 1)
36 {
37 s[ss] = str;
38 System.out.print(s[ss]);
39 A = (double)a;
40 B = (double)b;
41 show(A,B,k);
42 ss ++;
43 }
44 }
45 else if(flagA == 1 && flagB == 0)
46 {
47 a = SuiJi1();
48 b = SuiJi1();
49 b1 = SuiJi1() + 1;
50 if(b < b1)
51 {
52 b = b;
53 }
54 else
55 {
56 b1 = b1 + b;
57 }
58 k = SuiJiyunsuanfu();
59 str = a + " " + ch[k] + " (" + b + "/" + b1 + ") = ";
60 if(Check(s,str,ss) != 1)
61 {
62 s[ss] = str;
63 System.out.print(s[ss]);
64 A = (double)a;
65 B = (double)b;
66 B1 = (double)b1;
67 show(A,B/B1,k);
68 ss ++;
69 }
70 }
71 else if(flagA == 0 && flagB == 1)
72 {
73 a = SuiJi1();
74 a1 = SuiJi1() + 1;
75 b = SuiJi1();
76 if(a > a1)
77 {
78 a1 = a + a1;
79 }
80 k = SuiJiyunsuanfu();
81 str = "(" + a + "/" + a1 + ") " + ch[k] + " " + b + " = ";
82 if(Check(s,str,ss) != 1)
83 {
84 s[ss] = str;
85 System.out.print(s[ss]);
86 A = (double)a;
87 A1 = (double)a1;
88 B = (double)b;
89 show(A/A1,B,k);
90 ss ++;
91 }
92 }
93 else
94 {
95 a = SuiJi1();
96 a1 = SuiJi1() + 1;
97 b = SuiJi1();
98 b1 = SuiJi1() + 1;
99 if(a > a1)
100 {
101 a1 = a + a1;
102 }
103 if(b > b1)
104 {
105 b1 = b + b1;
106 }
107 k = SuiJiyunsuanfu();
108 str = "(" + a + "/" + a1 + ") " + ch[k] + " " + b + "/" + b1 + " = ";
109 if(Check(s,str,ss) != 1)
110 {
111 s[ss] = str;
112 System.out.print(s[ss]);
113 A = (double)a;
114 A1 = (double)a1;
115 B = (double)b;
116 B1 = (double)b1;
117 show(a/a1,b/b1,k);
118 ss ++;
119 }
120 }
121
122
123
124 }
125
126 }
127
128 public static int SuiJi1()
129 {
130 int a;
131 a = (int)(Math.random()*100);
132 return a;
133 }
134 public static int SuiJiyunsuanfu()
135 {
136 int a;
137 a = (int) (Math.random()*4);
138 return a;
139 }
140 public static int Check(String s[],String str,int ss)
141 {
142 int qqq = 0;
143 for(int i = 0;i < ss;i ++)
144 {
145 if(str.equals(s[ss]))
146 {
147 qqq = 1;
148 break;
149 }
150 }
151 return qqq;
152 }
153 public static int SuiJileixing()
154 {
155 int flag = (int)(Math.random()*2);
156 return flag;
157 }
158 public static void show(double a,double b,int k)
159 {
160 if(k == 0)
161 {
162 System.out.println(a + b);
163 }
164 if(k == 1)
165 {
166 System.out.println(a - b);
167 }
168 if(k == 2)
169 {
170 System.out.println(a * b);
171 }
172 if(k == 3)
173 {
174 System.out.println(a / b);
175 }
176 }
177 }
四、运行结果截图: