zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成程序(基于控制台)

    一.题目描述:

    1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

    2.运算符为 +, −, ×, ÷

    3.并且要求能处理用户的输入,并判断对错,打分统计正确率。

    4.要求能处理用户输入的真分数, 如 1/2, 5/12 等

    5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目

    6.Myapp.exe -n 10

    二.需求分析:

    1.能随机生成整数和分数的四则运算

    2.能够判断用户的回答是否正确,并计算其准确率

    3.能用参数控制生成题目个数

    三.功能设计:

    1.随机产生四则运算符

    2.随机产生整数或真分数

    3.根据用户需求确定出题数目

    4.处理用户输入并判断正误,计算正确率

    四.代码说明:

    1.随机分数生成方法

    public static int[] createFraction(){    
    int[] n = new int[2];
        int n1 = (int)(Math.random()*10+1);
        int n2 = (int)(Math.random()*10+1);
        if(n1 != n2){
            n[0] = n2;
            n[1] = n1;
        }else
            createFraction();
        return n;
    }
    2.辗转相除法求最大公约数函数

    int maxGYS(int a,int b){
    
        return a%b==0?b:maxGYS(b,a%b);
    
    }
    
    int minGBS(int a,int b)
    
    {
    
        int min, max;
    
        int r;
    
        max=a>b?a:b;
    
        min=a<b?a:b;
    
        if(max%min==0)
    
            return max;
    
        while(max%min!=0)
    
        {
    
            r=max%min;
    
            max=min;
    
            min=r;
    
        }
    
        return a*b/min;
    
    }

    3.四则运算

    int a = (int)(Math.random()*4+1);
                if(a==1){//
                    Question.add("("+fn1[0]+"/"+fn1[1]+")+("+fn2[0]+"/"+fn2[1]+")=");
                    int sum = gbs/fn1[1]*fn1[0] + (gbs / fn2[1]*fn2[0]);
                    int gys1 = GCD(sum,gbs);
                    Answer.add(sum/gys1+"/"+gbs/gys1+"");//化简结果并存储
                }
                if(a==2){//
                    Question.add("("+fn1[0]+"/"+fn1[1]+")-("+fn2[0]+"/"+fn2[1]+")=");
                    int cha = gbs/fn1[1]*fn1[0] - (gbs / fn2[1]*fn2[0]);
                    int gys2 = GCD(cha,gbs);
                    Answer.add(cha/gys2+"/"+gbs/gys2+"");
                }
                if(a==3){//
                    Question.add("("+fn1[0]+"/"+fn1[1]+")×("+fn2[0]+"/"+fn2[1]+")=");
                    int mult1 = fn1[0]*fn2[0]; 
                    int mult2 = fn1[1]*fn2[1];
                    int gys3 = GCD(mult1,mult2);
                    Answer.add(mult1/gys3+"/"+mult2/gys3+"");//
                }
                if(a==4){//
                    Question.add("("+fn1[0]+"/"+fn1[1]+")÷("+fn2[0]+"/"+fn2[1]+")=");
                    int div1 = fn1[0]*fn2[1]; //转化为乘法
                    int div2 = fn1[1]*fn2[0];
                    int gys4 = GCD(div1,div2);
                    Answer.add(div1/gys4+"/"+div2/gys4+"");
                }               
            }

    五.测试运行

    PSP展示:

    PSP2.1 Personal Software Process Stages Time (%) Senior Student Time (%)
    Planning 计划 10 8
    · Estimate 估计这个任务需要多少时间 30 32
    Development 开发 25 23.5
    · Analysis 需求分析 (包括学习新技术) 6 10
    · Design Spec 生成设计文档 5 6
    · Design Review 设计复审 4 6
    · Coding Standard 代码规范 3 2.5
    · Design 具体设计 5 4.5
    · Coding 具体编码 36 21
    · Code Review 代码复审 3 2
    · Test 测试(自我测试,修改代码,提交修改) 8 7
    Reporting 报告 2 2.5
    · 测试报告 4 6
    · 计算工作量 2 1
    · 并提出过程改进计划 4 3.5
     

    总结:

    看到代码实在是头痛,自己的编程能力太弱,一开始拿到题目不知道怎么入手,网上查找了很多资料,才慢慢理清思路,先构思需要的程序公共,再逐步去完成。但是代码实现得并不好,在编程的过程中,碰到许多问题,应该多找找资料,逐步去解决。学习新东西,应该要有耐心。

  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/ly-35/p/6517946.html
Copyright © 2011-2022 走看看