zoukankan      html  css  js  c++  java
  • 练习一升级及分析

      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("数学四则运算题目 	注意例子:(3/4)为真分数四分之三
    测试开始
     
    打印题目数量:");
     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("答对了!!
    ");
     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("答对了!!
    ");
     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("答对了!!
    ");
     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("答对了!!
    ");
    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+"题"+"	答对了"+right+"题
    ");
    114         System.out.print("你的分数是:	");
    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("答对了!!
    ");
    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("答对了!!
    ");
    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("答对了!!
    ");
    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("答对了!!
    ");
    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.针对含有真分数的运算,暂时只能让用户输入最终的答案,如果输入真分数答案会出错。如图

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/maxx/p/4375543.html
Copyright © 2011-2022 走看看