首页 > 其他 > 详细

自动生成三十道小学四则运算题目,支持真分数,有验证结果

时间:2017-03-03 22:39:49      阅读:378      评论:0      收藏:0      [点我收藏+]
  1 package Demo;
  2 
  3 import java.util.Scanner;
  4 
  5 public class size {
  6     public static void main(String[]args)
  7     {
  8         String ch="y";//是否退出循环
  9         int choose=0;//判断是否添加真分数
 10         int []cc1=new int [2];//记录正确和错误的题数
 11         int []cc2=new int [2];//用来接收正确和错误的题数
 12         int yn=0;//运行一次while循环时,只让第一次询问是否添加真分数
 13         
 14         Scanner scan=new Scanner(System.in);
 15         while(ch=="y")
 16         {
 17             if(yn==0)
 18             {
 19                 yn++;
 20                 System.out.println("你学过真分数吗:1.学过。2没学过");
 21                 choose=scan.nextInt();
 22             }
 23             else{
 24                 if(choose==1)
 25                 {
 26                     
 27                     System.out.println("你想做几个题呢");
 28                     int num=scan.nextInt();
 29                     cc2=fuza(num);
 30                     cc1[0]+=cc2[0];
 31                     cc1[1]+=cc2[1];
 32                     System.out.println("好棒,是继续努力还是先休息一会,请选择:1.继续。2休息一会");
 33                     {
 34                         int rl=scan.nextInt();
 35                         if(rl==2)
 36                         {
 37                             ch="z";
 38                             System.out.println("你一共作答"+(cc1[0]+cc1[1])+"道题,"+"其中共答对了"+cc1[0]+"道题,"+"答错了"+cc1[1]+"道题.");
 39                         }
 40                     }
 41                 
 42                 }
 43                 else 
 44                 {
 45                     
 46                     System.out.println("你想做几个题呢");
 47                     int num=scan.nextInt();
 48                     cc2=simpleys(num);
 49                     cc1[0]+=cc2[0];
 50                     cc1[1]+=cc2[1];
 51                     System.out.println("好棒,是继续努力还是先休息一会,请选择:1.继续。2休息一会");
 52                     {
 53                         int rl=scan.nextInt();
 54                         if(rl==2)
 55                         {
 56                             ch="z";
 57                             System.out.println("你一共作答"+(cc1[0]+cc1[1])+"道题,"+"其中共答对了"+cc1[0]+"道题,"+"答错了"+cc1[1]+"道题.");
 58                         }
 59                     }
 60                 }
 61             }
 62             
 63         }
 64     }
 65     static int[] yunsuan2(int a,int b,int c,int d,int e)
 66     {
 67         int []cc1=new int[3];
 68         cc1[2]=0;
 69         int f=0,g=0,h=0,t=0;
 70         if(e==0)
 71         {
 72             if(b==d)
 73             {
 74                 f=a+c;
 75                 g=b;
 76                 if(f<g)
 77                 {
 78                     h=maxyue(g,f);
 79                     f=f/h;
 80                     g=g/h;
 81                 }
 82                 else
 83                 {
 84                     h=maxyue(f,g);
 85                     f=f/h;
 86                     g=g/h;
 87                 }
 88             }
 89             else
 90             {
 91                 g=b*d/maxyue(b,d);
 92                 a=g/b*a;
 93                 c=g/d*c;
 94                 f=a+c;
 95                 if(f<g)
 96                 {
 97                     h=maxyue(g,f);
 98                     f=f/h;
 99                     g=g/h;
100                 }
101                 else{
102                     h=maxyue(f,g);
103                     f=f/h;
104                     g=g/h;
105                 }
106             }
107         }
108         else if(e==1)
109         {
110             if(b==d)
111             {
112                 f=a-c;
113                 if(f<=0)
114                 {
115                     cc1[2]=1;
116                 }
117                 g=b;
118                 if(f<g)
119                 {
120                     h=maxyue(g,f);
121                     f=f/h;
122                     g=g/h;
123                 }
124                 else{
125                     h=maxyue(f,g);
126                     f=f/h;
127                     g=g/h;
128                 }
129             }
130             else
131             {
132                 g=b*d/maxyue(b,d);
133                 a=g/b*a;
134                 c=g/d*c;
135                 f=a-c;
136                 if(f<0)
137                 {
138                     cc1[2]=1;
139                 }
140                 if(f<g)
141                 {
142                     h=maxyue(g,f);
143                     f=f/h;
144                     g=g/h;
145                 }
146                 else{
147                     h=maxyue(f,g);
148                     f=f/h;
149                     g=g/h;
150                 }
151             }
152         }
153         else if(e==2)
154         {
155             f=a*c;
156             g=b*d;
157             if(f<g)
158             {
159                 h=maxyue(f,g);
160             }
161             else
162             {
163                 h=maxyue(g,f);
164             }
165             f=f/h;
166             g=g/h;
167         }
168         else
169         {
170             f=a*d;
171             g=b*c;
172             if(f>g)
173             {
174                 h=maxyue(f,g);
175             }
176             else
177             {
178                 h=maxyue(g,f);
179             }
180             f=f/h;
181             g=g/h;
182         }
183         cc1[0]=f;
184         cc1[1]=g;
185         return cc1;
186     }
187     private static int[] fuza(int num) {
188         String []a1=new String[num+1];
189         String []a2=new String[num+1];
190         int []cc1=new int [2];
191         int []cc2=new int[2];
192         int zj=0,cj=0;//分别记录正确的题数和错误的题数
193         int i=0;
194         int m=0;//判断是否打印出来
195         String l="";
196         String rs="";
197         Scanner sc=new Scanner(System.in);
198         String rs2;//用户的回答
199         int r1=0;
200         while(i<num)
201         {
202             m=0;
203             l="";
204             rs="";
205             int a=(int)(Math.random()*10);
206             int b=(int)(Math.random()*10);
207             int c=(int)(Math.random()*10);
208             int d=(int)(Math.random()*10);
209             int e=(int)(Math.random()*4);
210             
211             String f="";
212             String g="";
213             if(a>=b||c>=d||c==0||d==0||b==0||a==0)
214             {
215                 m=1;
216                 
217             }
218             else
219             {
220                 cc1=yunsuan2(a,b,c,d,e);
221                 if(cc1[2]==1)
222                 {
223                     m=1;
224                 }
225                 else
226                 {
227                     int h=maxyue(a,b);
228                     int k=maxyue(c,d);
229                     if(h==1)
230                     {
231                         f="("+a+"/"+b+")";
232                     }
233                     else 
234                     {
235                         a=a/h;
236                         b=b/h;
237                         f="("+a+"/"+b+")";
238                     }
239                     
240                      if(k==1)
241                     {
242                         g="("+c+"/"+d+")";
243                         
244                     }
245                     else
246                     {
247                         c=c/k;
248                         d=d/k;
249                         g="("+c+"/"+d+")";
250                     }
251                     a1[i]=f;
252                     a2[i]=g;
253                     for(int j=0;j<i;j++)
254                     {
255                         if(a1[j].equals(f)&&a2[j].equals(g))
256                         {
257                             m=1;
258                             a1[i]="";
259                             a2[i]="";
260                             break;
261                         }
262                     }
263                     if(m==0)
264                     {
265                         if(e==0)
266                         {
267                             l="+";
268                         }
269                         else if(e==1)
270                         {
271                             l="-";
272                         }
273                         else if(e==2)
274                         {
275                             l="*";
276                         }
277                         else 
278                         {
279                             l="/";
280                         }
281                         
282                         if(cc1[0]>=cc1[1]&&cc1[0]%cc1[1]==0)
283                         {
284                             r1=cc1[0]/cc1[1];
285                             rs+=""+r1;
286                         }
287                         else
288                         {
289                             rs+="("+cc1[0]+"/"+cc1[1]+")";
290                         }
291                         System.out.println("请作答第"+(i+1)+"题"+":"+f+l+g+"=");
292                         System.out.print("请输入答案:");
293                         rs2=sc.next();
294                         if(rs2.length()>1)
295                         {
296                             rs2="("+rs2+")";
297                         }
298                         if(rs2.equals(rs))
299                         {
300                             System.out.println("恭喜你,回答正确!");
301                             zj++;
302                         }
303                         else
304                         {
305                             cj++;
306                             System.out.println("哦哦,回答错误!正确答案是:"+rs);
307                         }
308                         i++;
309                         
310                     }
311                     
312                 }
313             }
314         }
315         System.out.println("你刚刚做了"+(i)+"个题,"+"其中共做对了"+zj+"道题,"+"做错了"+cj+"个题");
316         cc2[0]=zj;
317         cc2[1]=cj;
318         return cc2;
319     }
320     static int[] simpleys(int num)
321     {
322         Scanner sc=new Scanner(System.in);
323         int []cc1=new int [num+1];
324         int []cc2=new int[num+1];
325         int []cc3=new int[2];
326         int i=0;//控制打印个数
327         int m=0;//判断是否打印出来
328         int rs;//输入结果
329         int t1=0;//记录正确的题数
330         int f1=0;//记录错误的题数
331         while(i<num)
332         {
333             int a=(int)(Math.random()*100);
334             int b=(int)(Math.random()*100);
335             int c=(int)(Math.random()*4);
336             String d="";
337             int t=0;
338             if(a<b)
339             {
340                 t=a;
341                 a=b;
342                 b=t;
343             }
344                 cc1[i]=a;
345                 cc2[i]=b;
346                 for(int j=0;j<i;j++)
347                 {
348                     if(cc1[j]==a&&cc2[j]==b)
349                     {
350                         m=1;
351                         break;
352                     }
353                 }
354                 if(c==0)
355                 {
356                     d="+";
357                 }
358                 else if(c==1)
359                 {
360                     d="-";
361                 }
362                 else if(c==2)
363                 {
364                     d="*";
365                 }
366                 else 
367                 {
368                     m=0;
369                     if(b==0||a % b!=0||a<b)
370                     {
371                         m=1;
372                     }
373                     d="/";
374                 }
375                 
376             
377             if(m==0)
378             {
379                 
380                 System.out.println("请作答第"+(i+1)+"个题"+":"+a+d+b+"=");
381                 i++;
382                 System.out.println("请输入你的答案:");
383                 rs=sc.nextInt();
384                 if(rs==yunsuan1(c,a,b))
385                 {
386                     System.out.println("恭喜你,回答正确,你真棒!");
387                     t1++;
388                 }
389                 else
390                 {
391                     f1++;
392                     System.out.println("哦哦,回答错了哦,正确结果是:"+yunsuan1(c,a,b));
393                 }
394             }
395         }
396         System.out.println("你刚刚做了"+(i)+"个题,"+"其中共做对了"+t1+"道题,"+"做错了"+f1+"个题");
397         cc3[0]=t1;
398         cc3[1]=f1;
399         return cc3;
400     }
401     static int yunsuan1(int c,int a,int b)
402     {
403         int x;
404         if(c==0)
405         {
406             x=a+b;
407         }
408         else if(c==1)
409         {
410             x=a-b;
411         }
412         else if(c==2)
413         {
414             x=a*b;
415         }
416         else
417         {
418             x=a/b;
419         }
420         return x;
421     }
422     static int maxyue(int y,int x)//最大公约数
423     {
424         int r=y;
425         while(r!=0)
426         {
427             r=x%y;
428             x=y;
429             y=r;
430         }
431         return x;
432     }
433 }

 

自动生成三十道小学四则运算题目,支持真分数,有验证结果

原文:http://www.cnblogs.com/qingtianxt/p/6498500.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!