• 个人作业1——四则运算题目生成程序


    一、需求分析
    (1)除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    (2)运算符为 +, −, ×, ÷
    (3)并且要求能处理用户的输入,并判断对错,打分统计正确率。
    (4)要求能处理用户输入的真分数, 如 1/2, 5/12 等
    (5)使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目Myapp.exe -n 10
    二、功能设计
    (1)可以随机产生真分数以及四则运算式,除了整数以外,也支持真分数的四则运算
    (2)可以实现对用户要求的题目数量的计算
    (3)该程序可计算出正确的答案并与用户输入的答案进行比较,最后统计出正确率
    三、设计实现
    该程序通过JAVA实现,主要设计了一个类(class zuoye1)和四个函数(Fraction、GCD、LCM、主函数main)
    (1)Fraction函数:用来实现对随机真分数的产生
    (2)GCD:用来求两个数之间的最大公约数,通过递归算法求出,使整体计算简便
    (3)LCM:用来求两个数之间的最小公倍数,通过递归算法求出,使整体计算简便
    (4)主函数main:随机生成四则运算式,计算正确答案并与用户的答案对比,统计正确率
    四、代码说明
    Fraction函数:

      public static int[] Fraction(){//随机生成真分数
            int[] n = new int[2];
            int q = (int)(Math.random()*10+1);//随机生成分母,分母≠0
            int Q = (int)(Math.random()*10+1);//随机生成分子,分母>分子,分子≠0
            if(q != Q){
                n[0] = Q;
                n[1] = q;
            }else
                Fraction();
            return n;
            }
    

    GCD:

      public static int GCD(int m, int n) {//递归法求最大公约数
            if(m < n){//保证m>n,否则进行交换
                int t = m;
                m = n;
                n= t;
            }
            if(m % n == 0){//若余数为0,返回最大公约数
                return n;
            }else{//否则进行递归
                return GCD(n, m % n);
            }
        }
    

    LCM:

       public static int LCM(int m, int n){//求最小公倍数
            return m * n / GCD(m,n);
        }
    

    部分主函数:

       public static void main(String[] args){//随机生成四则运算式
            ArrayList<String>Question = new ArrayList<String>();//题目存储列表
            ArrayList<String>Answer = new ArrayList<String>();//答案存储列表
            System.out.println("请输入题目数量:");
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = (int)(Math.random()*n);//随机整数题目和分数题目的题量
            int x;
            int y;
            for(int i = 0;i<(n-m);i++){//先随机出整数题型
                x = (int)(Math.random()*10);
                y = (int)(Math.random()*10);
                if(y != 0){//当进行除法时,0不能作为除数
                    int a = (int)(Math.random()*4+1);//随机决定运算类型
                    if(a == 1){
                        Question.add(x+"+"+y+"=");
                        Answer.add(x+y+"");
                    }
                    if(a == 2){
                        Question.add(x+"-"+y+"=");
                        Answer.add(x-y+"");
                    }
                    if(a == 3){
                        Question.add(x+"×"+y+"=");
                        Answer.add(x*y+"");
                    }
                    if(a == 4){
                        Question.add(x+"÷"+y+"=");
                        BigDecimal b =new BigDecimal((float)x/y);
                        float ans = b.setScale(1,BigDecimal.ROUND_UP).floatValue();//保留一位小数,四舍五入
                        Answer.add(ans+"");
                    }
    
    
                    }else{//当y值为0时不产生除法运算
                        int a = (int)(Math.random()*3+1);
                        if(a == 1){
                            Question.add(x+"+"+y+"=");
                            Answer.add(x+y+"");
                        }
                        if(a == 2){
                            Question.add(x+"-"+y+"=");
                            Answer.add(x-y+"");
                        }
                        if(a == 3){
                            Question.add(x+"×"+y+"=");
                            Answer.add(x*y+"");
                        }
                }
            }
    

    五:运行截图

    六:PSP

    小结:这次实验对我来来说较为困难,经过查看了一些资料,还借鉴了其他同学对本次实验代码的实现,最终决定采用JAVA。在网上找了一些类似的代码,经过修修改改,大抵完成了这次实验。但是整体上还是存在问题的,比如代码的扩展性不是很好,这个还需修改完善。

    码市链接:https://coding.net/u/hjyaaa/p/zuoye1/git/blob/master/zuoye1.java

  • 相关阅读:
    iis WebSocket 搭建环境及配置
    RESTful API 设计最佳实践
    laravel/lumen 单元测试
    后台管理UI的选择
    lumen Response
    计算机网络——OSI、TCP/IP协议族详解
    Java中'&'与、'|'或、'^'异或、'<<'左移位、'>>'右移位
    Servlet、Struts2、SpringMVC执行流程
    final修饰符,finally,finalize区别
    JSP的九个隐式(内置)对象
  • 原文地址:https://www.cnblogs.com/smilehjy/p/6512340.html
Copyright © 2020-2023  润新知