01:JAVA_四则运算题目生成程序(基于控制台)

Wesley13
• 阅读 659

一、题目要求

1. 使用 -n 参数控制生成题目的个数,例如

Myapp.exe -n 10 -o Exercise.txt

将生成10个题目。

2. 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如

Myapp.exe -r 10

将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。

3. 生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。

4. 每道题目中出现的运算符个数不超过3个。

5. 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。

生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:

  1. 四则运算题目1

  2. 四则运算题目2

……

其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。

6. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:

  1. 答案1

  2. 答案2

特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。

7. 程序应能支持一万道题目的生成。

8. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,并会输出所有题目中重复的题目,输入参数如下:

Myapp.exe -e .txt -a .txt -o Grade.txt

统计结果输出到文件Grade.txt,格式如下:

Correct: 5 (1, 3, 5, 7, 9)

Wrong: 5 (2, 4, 6, 8, 10)

Repeat:2

RepeatDetail:

(1)   2,45+32  Repeat 3,32+45

(2)   5,3+(2+1)  Repeat 7,1+2+3

解释:

Correct: 5 ----5道题目正确,正确的题号 1,3,5,7,9

Wrong:5 -----5道题目错误,错误的题号 2,4,6,8,10

Repeat:2   2---组题目重复

(1) 第一组 题号2,题目 45+32  与题号3的题目重复,题号3为 32+45

(2)第二组  题号5,题目 3+(2+1) 与题号7的题目重复,题号7为 1+2+3

二、需求分析

1.符合当下市场需要,方便小学数学题目演算与自动生成习题,便于随堂测验或考试需求,简便提供所需要的题目与答案,可重复使用

2.适合在校学生对自己综合能力的检测,对java编程能力进行巩固强化,培养独立思考能力与编码逻辑思维

3.属于面向对象编程的课程范围,利于教师收集学生个人素质能力与编程能力,在不抄袭与复制他人代码的前提下,极大程度地加强教师对学生综合水平的认识

4.温故知新,适用于在校学习有一定时间段的学生独立完成

三、功能设计

能够自主随机生成测试题目,按照要求格式出题并且得出相应答案,查重功能未设置,真分数与化简功能可能是因为嵌套出现了问题没有实现,但是该功能的逻辑已在代码中写出,其中运用辗转相除法求出最大公约数,继而令分子分母同时除以相应公约数得到最简分数,最后进行相应的四则运算。

四、设计实现

1.设置子函数gcd,子函数内部独立完成辗转相除法,用于最后化简分数从而得到最简分数

2.设置子函数enter,子函数提示输入一个数字X,从而令程序完成X次生成循环,得到X道四则运算题目

3.运用switch代码实现随机运算字符功能

五、关键代码说明

01:JAVA_四则运算题目生成程序(基于控制台)

运用(int)(1+Math.random()*(100-1+1))实现随机生成1--100以内数字,同时生成整数Z为1,2,3,4,Z的不同结果分别代表实现运算+,-,*,/。

01:JAVA_四则运算题目生成程序(基于控制台)

通过辗转相除法得到最大公约数b

01:JAVA_四则运算题目生成程序(基于控制台)

01:JAVA_四则运算题目生成程序(基于控制台)

运用最大公约数b得到化简后的最简分数(该步骤因某些原因未完成,尚未debug发现错误在何处)

 六、运行测试

01:JAVA_四则运算题目生成程序(基于控制台)

七、作业小结

基于生疏的操作,本次作业并不令人满意,没有给出更多运算符,没有发现最简分数的代码在哪里出错导致未完成该功能。生成题目比较简单,java代码编辑不熟练,在以后的作业中应当加强这方面的学习,尽量把以前学过的东西都给补回来。

  GitHub:https://gitee.com/cin233/TEST/tree/master

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Wesley13 Wesley13
3年前
2018软件工程第五次作业(结对二)
结对作业:小学计算题生成程序一、题目要求我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:能够自动生成四则运算练习题可以定制题目数量用户可以选择运算符用户设置最大数(如十以内、百以内等)用户选择是否有括号、是否有小数用户选择输出方式(如输出到文件、打印机等)