练习一升级及分析

  1 //20150324 练习1 
  2 import java.util.*;
  3 public class exercise {
  4     static int a,b;
  5     static char[]ch={'+','-','*','/'};
  6     static Scanner in=new Scanner(System.in);
  7     static int number,right=0;
  8     static double answer;
  9     static int total=0;
 10 
 11     public static void main(String[] args)
 12  {                
 13         System.out.println("数学四则运算题目 \t注意例子:(3/4)为真分数四分之三\n测试开始\n \n打印题目数量:");
 14         number=in.nextInt();//出题数目
 15         for(int i=0;i<number;i++)    
 16         {    int n = new Random().nextInt(5);//获取运算的方式0—— +    1—— -    2—— *    3—— /
 17             if(n==0 || n==2 || n==3 || n==1)//int型的运算
 18             {
 19                 a = new Random().nextInt(100);
 20                 b =new Random().nextInt(100)+1;//获取式子的运算随机数
 21                 System.out.print(a+""+ch[n]+""+b+"=");//输出式子
 22         
 23                 answer=in.nextDouble();//获取答案处理用户输入
 24                 //判断答案是否正确的方法
 25                judge(n);//判断是否正确
 26               }
 27             else if(n==4)//含有真分数的运算
 28              {
 29                 int c = 0;
 30                 int d=0;
 31                 int e=0;
 32                 int f=0;
 33                 int fm=0;
 34                 int fz=0;//答案的分子分母
 35                 boolean t = true;
 36                 while(t==true)//判断并输出真分数
 37                 {
 38                      c = new Random().nextInt(10);
 39                      d =new Random().nextInt(10);//获取式子的运算随机数
 40                     if(c<d)
 41                         t=false;
 42                     
 43                 }
 44 
 45                 t=true;
 46                 while(t==true)//判断并输出真分数
 47                 {
 48                      e =new Random().nextInt(10);
 49                      f =new Random().nextInt(10);//获取式子的运算随机数
 50                     if(e<f)
 51                         t=false;
 52                     
 53                 }
 54                 n=new Random().nextInt(4);
 55                 System.out.print("("+c+"/"+d+")"+ch[n]+"("+e+"/"+f+")"+"=");
 56                 answer=in.nextInt();
 57                 //真分数运算的判断
 58                 if(n==0)//加法
 59                 {    
 60                     fm=d*f;
 61                     fz=(c*f)+(e*d);
 62                     if(answer==(fz/fm))
 63                     {
 64                         System.out.printf("答对了!!\n");
 65                         right=right+1;
 66                     }
 67                     else
 68                         System.out.println("答错了!!答案是"+(fz/fm));
 69                 }
 70                 else if(n==1)//减法
 71                 {    
 72                     fm=d*f;
 73                     fz=(c*f)-(e*d);
 74                     if(answer==(fz/fm))
 75                     {
 76                         System.out.printf("答对了!!\n");
 77                         right=right+1;
 78                     }
 79                     else
 80                         System.out.println("答错了!!答案是"+(fz/fm));
 81                 }
 82                 else if(n==2)//乘法
 83                 {    
 84                     fz=c*e;
 85                     fm=d*f;
 86                     if(answer==fz*fm)
 87                     {
 88                         System.out.printf("答对了!!\n");
 89                         right=right+1;
 90                     }
 91                     else
 92                         System.out.println("答错了!!答案是"+(fz*fm));
 93                 }
 94                 else if(n==3)//除法
 95                 {    
 96                     fz=c*f;
 97                     fm=d*e;
 98                     int ans=(int)(fz/fm);
 99                     if(answer==ans)
100                     {
101                         System.out.printf("答对了!!\n");
102                         right=right+1;
103                     }
104                     else
105                         System.out.println("答错了!!答案是"+(fz/fm));
106                 }
107                  
108                  
109              }
110             
111         }
112         //打分统计
113         System.out.print("总共"+number+"题"+"\t答对了"+right+"题\n");
114         System.out.print("你的分数是:\t");
115         if(right==number)
116             System.out.print("100分");
117         else 
118             System.out.print((total=right*(100/number))+"分");
119         
120     }
121     static void judge(int n)//判断对错
122     {
123     
124         if(n==0)
125         {    
126             if(answer==a+b)
127             {
128                 System.out.printf("答对了!!\n");
129                 right=right+1;
130             }
131             else
132                 System.out.println("答错了!!答案是"+(a+b));
133         }
134         else if(n==1)
135         {    
136             if(answer==a-b)
137             {
138                 System.out.printf("答对了!!\n");
139                 right=right+1;
140             }
141             else
142                 System.out.println("答错了!!答案是"+(a-b));
143         }
144         else if(n==2)
145         {    
146             if(answer==a*b)
147             {
148                 System.out.printf("答对了!!\n");
149                 right=right+1;
150             }
151             else
152                 System.out.println("答错了!!答案是"+(a*b));
153         }
154         else if(n==3)
155         {    
156             int ans=(int)(a/b);
157             if(answer==ans)
158             {
159                 System.out.printf("答对了!!\n");
160                 right=right+1;
161             }
162             else
163                 System.out.println("答错了!!答案是"+(a/b));
164         }
165     }
166 }

执行情况:1.执行后台。如图:

2.判断对错。如图:

3.记分情况。每题分值会因为提数不同而不同,总分是100.如图

待改进的情况,问题:

1.除法运算只能将结果为整型;如15/16=  如果答案是0就正确,应该为0.93才对,除法结果处理不合理,而且也只局限整型中的运算;

2.针对含有真分数的运算,暂时只能让用户输入最终的答案,如果输入真分数答案会出错。如图

posted @ 2015-03-29 13:01  51冯美欣max  阅读(233)  评论(5编辑  收藏  举报