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

时间:2022-05-09 21:56:58

coding.net地址:https://git.coding.net/YJc_/First-homework.git

 


 

a.题目描述:

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

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

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

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

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

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


 

b.程序分析:

从题目出发完成基本要求

  1. 完成四则基本运算
  2. 能处理真分数
  3. 按用户要求出题目数量
  4. 能得出用户做题的正确率

 

c.实现步骤

  1. 根据用户输入的参数(整数n),生成n道简单的分数运算题
  2. 获取用户输入的答案
  3. 校验用户输入的答案和正确的答案
  4. 给出用户的答题正确率
Fraction类
个人作业1——四则运算题目生成程序

 

class Fraction {
private int c;
private int d;
}

主要四则运算代码:

    // ----- plus
public Fraction minus(Fraction f2) {
int newNumerator = c * f2.getDinominator() - d * f2.getNumerator();
int newDinominator = d * f2.getDinominator();

int maxCommon = commonDivisor(newNumerator, newDinominator);
return new Fraction(newNumerator / maxCommon, newDinominator
/ maxCommon);
}

// ----- minus
public Fraction plus(Fraction f2) {
int newNumerator = c * f2.getDinominator() + d * f2.getNumerator();
int newDinominator = d * f2.getDinominator();

int maxCommon = commonDivisor(newNumerator, newDinominator);
return new Fraction(newNumerator / maxCommon, newDinominator
/ maxCommon);
}

// ----- mutiply
public Fraction multiply(Fraction f2) // 两个分数相乘。
{
int newNumerator = c * f2.getNumerator();
int newDinominator = d * f2.getDinominator();

int maxCommon = commonDivisor(newNumerator, newDinominator);
return new Fraction(newNumerator / maxCommon, newDinominator
/ maxCommon);
}

// ----- divide
public Fraction divide(Fraction f2) {
if (f2.getNumerator() == 0) {
System.out.println(
"0不能做除数!");
// System.exit(0);
}
Fraction result
= new Fraction();
int newNumerator = c * f2.getDinominator();
int newDinominator = d * f2.getNumerator();

int maxCommon = commonDivisor(newNumerator, newDinominator);
return new Fraction(newNumerator / maxCommon, newDinominator
/ maxCommon);
}

主要算法:

    public static int commonDivisor(int x, int y) // 计算2个数的最大公约数。按绝对值计算。
{
if (x == 0 || y == 0) {
return 1;
}
int x1;
int y1;

x1
= (Math.abs(x) > Math.abs(y)) ? Math.abs(x) : Math.abs(y); // 使x1>y1.
y1 = (Math.abs(x) > Math.abs(y)) ? Math.abs(y) : Math.abs(x);
int z = 1;
while (z != 0) {
z
= x1 % y1;
x1
= y1;
y1
= z;
}
return x1;
}

d.程序测试

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


e.实验总结和自我评价

  • 第一次编写博客随笔,参考了一些同学的博客,有一些不足的地方。
  • 使用java语言编程这个程序的时候遇到一些函数的使用,经常要翻看参考手册,所以在编程的时候周期较长。
  • 本身编程能力不足,有的功能实现不了,但是会继续学习,多参考专业同学的实现方法。

 

psp表格

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