一.题目描述:java
从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,知足如下需求:git
除了整数之外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷而且要求能处理用户的输入,并判断对错,打分统计正确率,要求能处理用户输入的真分数, 如 1/2, 5/12 等
用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目编程
Myapp.exe -n 10架构
二.需求分析
a.须要可以实现对整数和分数的四则运算;app
b.可以处理用户输入,可以对用户输入的答案作出比较,求正确率;dom
c.可以处理用户输入的真分数;函数
d.随机生成练习题;
e.最好可让用户自行选择难度,低年级就作简单四则运算,高年级就加入分数,负数等;
三.程序实现
程序实现大致能够分为3个阶段:学习
①设计总体架构,用选择结构(if或者Swith)对整数和分数分别处理;测试
②实现整数四则运算的程序编写;.net
③实现对真分数四则运算的程序编写。
四.代码说明
①整数部分功能较为简单,随机生成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.低年级简单整数四则运算测试结果图:
2.中高年级真分数四则运算测试结果图:
六。PSP图展现:
七.心得体会
java编程基础太差,遇到的问题太多了。每次发现一个小问题都要花费不少时间学习,但愿通过从此的多练习能有所改善吧。哇,这个多是别人的一个小小的做业,对于我,多是个“小课设”。悲哀。。。
附源代码:https://git.coding.net/a434961671/goujian.git