zoukankan      html  css  js  c++  java
  • 四则运算题目生成程序

    | 博客班级 | 班级链接 |
    | ---- | ---- | ---- |
    | 作业要求 | 作业连接 | |
    | 作业目标 | 培养编码能力 | |
    | 学号 | 3180701119 | |
    题目要求

    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

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

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    代码提交
    a.需求分析:
    除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    运算符为 +, −, ×, ÷
    并且要求能处理用户的输入,并判断对错,打分统计正确率。
    要求能处理用户输入的真分数, 如 1/2, 5/12 等
    使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
    Myapp.exe -n 10

    b.功能设计:
    基本功能:实现简单的四则运算出题
    扩展功能:验证对错,如果错误显示正确答案并统计正确率
    高级功能:能够进行记时

    c.设计实现:
    分数类 Fraction:
    属性:numerator//分子
    denominator//分母
    方法:creatfraction() //创建分数
    GCD(int m, int n) //计算最大公约数
    Reduction(int m, int n) //约分
    compare(String m, String n) //比较输入结果与答案
    计算类 Calculator:
    方法:add(Fraction a, Fraction b) //加法
    sub(Fraction a, Fraction b) //减法
    mul(Fraction a, Fraction b)//乘法
    div(Fraction a, Fraction b)//除法
    运行类 Test:
    main函数执行
    d.代码说明:
    计算公约数:
    public static int GCD(int m, int n) {//辗转相除法
    while (m % n != 0) {
    int t = m % n;
    m = n;
    n = t;
    }
    return n;
    }
    约分:
    public static String Reduction(int m, int n) //约分
    {
    String t;
    if (n == 1) {
    t = m + "";
    } else {
    t = (m) + "" + "/" + (n) + "";
    }
    return t;
    }
    加法运算: 
    public static String add(Fraction a, Fraction b) //加法
    {
    int m = a.getNumerator() *b.getDenominator() + a.getDenominator() * b.getNumerator();
    int n = a.getDenominator() * b.getDenominator();
    int t = Fraction.GCD(m,n);
    return Fraction.Reduction(m / t, n / t);
    }
    减法运算:
    public static String sub(Fraction a, Fraction b)//减法
    {
    int m = a.getNumerator() * b.getDenominator() - a.getDenominator() * b.getNumerator();
    int n = a.getDenominator() * b.getDenominator();
    int t = Fraction.GCD(m,n);
    return Fraction.Reduction(m / t, n / t);
    }
    乘法运算:
    public static String mul(Fraction a, Fraction b)//乘法
    {
    int m = a.getNumerator() * b.getNumerator();
    int n = a.getDenominator() * b.getDenominator();
    int t = Fraction.GCD(m,n);
    return Fraction.Reduction(m / t, n / t);
    }
    除法部分 :
    public static String div(Fraction a, Fraction b)//除法
    {
    int m = a.getNumerator() * b.getDenominator();
    int n = a.getDenominator() * b.getNumerator();
    int t = Fraction.GCD(m,n);
    return Fraction.Reduction(m / t, n / t);
    }
    验证对错,如果错误显示正确答案:
    public static boolean compare(String m, String n) //比较输入结果与答案
    {
    if (m.equals(n))
    {System.out.println("恭喜你,回答正确!");
    return true;}
    else
    {
    System.out.println("回答错误,再接再厉,正确答案是:" + n);
    return false;
    }
    }
    统计正确率、记时:
    public class Test {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
    Fraction f1 = new Fraction();
    Fraction f2 = new Fraction();
    int operator;
    int right=0,wrong=0;
    String answer;
    Scanner s1 = new Scanner(System.in);
    System.out.println("请输入想要完成的题目数 :");
    int i = s1.nextInt();
    long begin = System.currentTimeMillis();

        ...
    

    long end = System.currentTimeMillis();
    long hour = (end - begin)/3600000;
    long minute = (end - begin-hour36000000)/60000;
    long second = (end - begin-hour
    36000000-minute*60000)/1000;
    double total = (double)right+wrong;
    System.out.println(" 您已完成练习!");
    System.out.println("你所用的时间是:" + hour+"小时"+minute+"分钟"+ second+"秒");
    System.out.println(' '+"一共有"+i+"题"+" ,"+"做对"+right+"题"+" ,"+"做错"+wrong+"题");
    System.out.printf("正确率:%f",right/total *100 );
    System.out.println("%");
    }
    }

    e测试运行:

    个人小结

  • 相关阅读:
    如何进入docker 使用root用户的方式
    阿里云服务搭建nginx并配置
    阿里云容器部署Redis集群
    Redis运维利器 -- RedisManager
    远程连接-使用SSH密钥对远程登录阿里云云服务器
    第1课:SQL注入原理深度解析
    数据库设计三大范式
    linux指令大全(归类整理)
    linux目录结构
    linux-创建/使用快照/克隆(类似windows中备份还原)
  • 原文地址:https://www.cnblogs.com/zhangzhen1119/p/13939426.html
Copyright © 2011-2022 走看看