个人作业1——四则运算题目生成程序(基于控制台)

一.题目描述:

从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:

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

Myapp.exe -n 10

二.需求分析
a.需要能够实现对整数和分数的四则运算;

b.能够处理用户输入,能够对用户输入的答案做出比较,求正确率;

c.能够处理用户输入的真分数;

d.随机生成练习题;
e.最好可以让用户自行选择难度,低年级就做简单四则运算,高年级就加入分数,负数等;
三.程序实现
程序实现大体可以分为3个阶段:

①设计整体架构,用选择结构(if或者Swith)对整数和分数分别处理;

②实现整数四则运算的程序编写;

③实现对真分数四则运算的程序编写。

四.代码说明

①整数部分功能较为简单,随机生成2个整数以及整数四则运算方法的编写,低年级不应出现整数过大,负数,不整除情况。(关键代码)

        for (int i = 1; i <= N; i++) {
            int a = (int) (Math.random() * 10 + 1);/*防止出现不好处理的0,很不严谨不可取*/
            int b = (int) (Math.random() * 10 + 1);
            int c = (int) (Math.random() * 4);
            int result = 0;
            switch (c) {
            case 0:
                System.out.print("第" + i + "题" + ": ");
                System.out.print(a + " + " + b + " = ");
                result = a + b;
                break;
            case 1:
                if (a < b) {
                    int t = a;/*保证不出现负数*/
                    a = b;
                    b = t;
                }
                System.out.print("第" + i + "题" + ": ");
                System.out.print(a + " - " + b + " = ");
                result = a - b;
                break;
            case 2:
                System.out.print("第" + i + "题" + ": ");
                System.out.print(a + " × " + b + " = ");
                result = a * b;
                break;
            case 3:
                System.out.print("第" + i + "题" + ": ");
                if (a < b) {
                    int t = a;
                    a = b;
                    b = t;
                }
                if (a % b != 0) {
                    a = (int) (Math.random() * 10 + 1) * b;/*保证能整除*/
                }

                System.out.print(a + " ÷ " + b + " = ");
                result = a / b;
                break;
            }

②真分数部分比较复杂,进行分数的加减运算时,需要进行分母的通分,结果得进行约分,保证结果是最简分数(关键代码)。
1.求最大公约数函数:
package yunsun;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;

public class lastdemo {

private static int Gcd(int num1, int num2) {// 求最大公约数
    num1 = Math.abs(num1);// 负数取绝对值
    num2 = Math.abs(num2);
    int min = Math.min(num1, num2);
    int maxSubmultiple = 1;
    for (int i = min; i >= 1; i--) {
        if (num1 % i == 0 && num2 % i == 0) {
            maxSubmultiple = i;
            break;
        }

    }
    return maxSubmultiple;
}

2.随机生成真分数,以及真分数的四则运算方法具体实现以及用户输入真分数处理,标准答案与用户输入答案比对,正确率计算参见源码。

五.测试运行
1.低年级简单整数四则运算测试结果图:
个人作业1——四则运算题目生成程序(基于控制台)_第1张图片
2.中高年级真分数四则运算测试结果图:

个人作业1——四则运算题目生成程序(基于控制台)_第2张图片
个人作业1——四则运算题目生成程序(基于控制台)_第3张图片
六。PSP图展示:
个人作业1——四则运算题目生成程序(基于控制台)_第4张图片

七.心得体会
java编程基础太差,遇到的问题太多了。每次发现一个小问题都要花费很多时间学习,希望经过今后的多练习能有所改善吧。哇,这个可能是别人的一个小小的作业,对于我,可能是个“小课设”。悲哀。。。
附源代码:https://git.coding.net/a434961671/goujian.git

转载于:https://www.cnblogs.com/zzzjt/p/6506837.html

你可能感兴趣的:(个人作业1——四则运算题目生成程序(基于控制台))