个人作业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.低年级简单整数四则运算测试结果图:
1111608-20170305220514345-2125009803.png
2.中高年级真分数四则运算测试结果图:

1111608-20170305220637454-962320744.png
1111608-20170305224106891-1718945514.png
六。PSP图展示:
1111608-20170305222935126-108164451.png

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值