作业:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/997

文档下载:https://coding.net/u/Dawnfox/p/f4/git/tree/master/doc

Vesion 开始时间 结束时间 备注
(V1.0) 2017/10/4 9:44:22 2017/10/4 11:33:12 初稿总结
(V1.1) 2017/10/4 15:57:08 2017/10/4 16:00:57 补充题目自动生成,并非用户手动输入

备忘:用于最后检验代码的功能是否完善,有遗漏的地方之后再补充。

一、正文

可执行文件(.exe)的文件名为f4,“>”表示可执行文件所在的文件目录,四则运算的题目是由程序生成而并非用户手动输入,用户只输入题目数量或者计算的结果。

功能1

仅支持四则基础运算,此时不支持括号。

a. 四则基础运算是指加(+),减(-),乘(*),除(/)。

b. 操作数的范围题目没明确指出,此处限定操作数的范围为-9999~9999,操作数应为整数或分数。

c. 功能1限定题目数量为20道。

d. 输入格式

在控制台输入“f4 回车”(无命令行参数)。

用户计算出的表达式结果的输入格式为“?a”,a为正确答案。如“?10”。

e. 输出格式

如果用户输入答案与题目正确的答案相等,则输出“答对啦,你真是天才!”,否则输出“再想想吧,答案似乎是(正确答案数字)喔!”。

用户答完20道题后,最后输出“你一共答对a道题,共b道题”。a为答对的题数量,b为题的总数,此时为20。还需注意最后这句话上面有一行空行。

f. 分数

1/3 != 0.33333333333333333333333333333333,而是无限长。该段话说明分数能够除尽时则可以用小数表示,否则应为分数形式。

功能2

在功能1基础上进行拓展,支持括号。

a. 括号此处只包括小括号(),不包括中括号[]与大括号{}。

b. 其他注意事项见功能1。

功能3

可定制题目数量,生成的题目两两之间不相同,将题目与正确答案打印到控制台与txt文件中。

a. 参数意义

两个命令行参数,参数1为-c,参数2代表题目数量。例:f4 -c 5 回车,该命令表示生成5道题目。

b. 参数格式

代表题目数量的参数2必须为正整数,如果为负数、小数、字符串、0或其他格式的不合法参数,输出“题目数量必须是 正整数。”。例:

f4 -c -200

题目数量必须是 正整数。

c. 相同题目的定义

普遍认为的相同题目是指题目A与题目B的操作符与操作数数量、顺序与形式都一致,如:题目A为1+2+3+4,而题目B为1+2+3+4。此处还需对“相同题目”进行定义,指看起来不一样的表达式通过交换律、结合律、分配律变换成另一道题目。如:题目A为12+32,题目B为2(1+3)+0。

d. 输出方式

“你忘记怎么调用打印机了,就把答案与题目横向对齐,输出在文件的右边。告诉老师txt文件可以用WORD打开,也能打印。”从这句话推断出,功能3不仅需要在控制台输出题目与正确答案,同时需要将题目与正确答案记录在相应的txt文件中。

e. 输出格式

答案与题目横向对齐,输出在文件的右边。需要注意题目是左对齐,而答案则是题目水平右侧且答案的第一个数字竖直方向对齐。例:

f4 -c 3

1+2
(3+4)= 15

(1+2)3+5= 14

((1/2)-4)
5= 17.5

功能4

待定,附加题,暂不考虑

四则运算可能需要注意的地方V1.1的更多相关文章

  1. [转]使用spring中的@Transactional注解时,可能需要注意的地方

    前情提要 在编写业务层方法时,会遇到很多需要事务提交的操作,spring框架为我们提供很方便的做法,就是在需要事务提交的方法上添加@Transactional注解,比起我们自己开启事务.提交以及控制回 ...

  2. 使用spring中的@Transactional注解时,可能需要注意的地方

    前情提要 在编写业务层方法时,会遇到很多需要事务提交的操作,spring框架为我们提供很方便的做法,就是在需要事务提交的方法上添加@Transactional注解,比起我们自己开启事务.提交以及控制回 ...

  3. [转]keil使用详解

    第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...

  4. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了“工厂模式”.“策略模式”.“状态模式”等.当然在重构时,有的地 ...

  5. *HDU2254 矩阵乘法

    奥运 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...

  6. ENode框架Conference案例分析系列之 - ENode框架初始化

    前言 Conference案例是使用ENode框架来开发的.之前我没有介绍过ENode框架是如何启动的,以及启动时要注意的一些点,估计很多人对ENode框架的初始化这一块感觉很复杂,一头雾水.所以,本 ...

  7. Log4j 与 Logback的ConversionPattern对比

    为了能将log4j的配置无缝转到logback,需要了解其中ConversionPattern的差异,以下是对比表格,内容来自: log4j官网 logback官网 其中可能需要转换的地方主要有两块: ...

  8. 温故而知新 OOP

    设计原则1: 找出应用中可能需要发生改变的地方,把它们独立出来,不要和那些不需要变化的代码混在一起换句话说,如果每次新的需求一来,都会使某方面的代码发生变化,此时你就可以确定,这部分代码属于不稳定代码 ...

  9. springmvc源码分析

    Spring MVC源码分析--初始化过程 标签: springmvcconstructioniocclass 2012-09-09 21:32 26578人阅读 评论(3) 收藏 举报 版权声明:本 ...

随机推荐

  1. python 利用turtle库绘制七段数码管的方式,绘制当前事件(时分秒00:00:00)

    # coding:utf-8# 绘制七段数码管,显示当前时间import timeimport turtle as tt # 绘制间隔def drawGap(): tt.penup() tt.fd(3 ...

  2. MySQL(一) 初识MySQL

    数据库基础 数据库是由一批数据构成的有序的集合,这些数据被存放在结构化的数据表里.数据表之间相互联系,反映了客观事物间的本质联系.数据库系统提供对数据的安全控制和完整性控制. 什么是数据库 数据库的发 ...

  3. Win10系列:UWP界面布局基础12

    画刷 画刷(Brush)用于为图形元素填充颜色.在XAML中,画刷有许多属性,其中较常使用的是Fill属性和Stroke属性,Fill用于填充图形的背景色,而Stroke用于设置图形的线条颜色. 在实 ...

  4. Win10系列:JavaScript页内导航

    页内导航是在一个页面内根据需要加载其他页面的内容,在开发基于JavaScript的Windows应用商店应用时,可以使用WinJS.Navigation.navigate函数传递要加载的页面地址并使用 ...

  5. UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  6. day040 数据库索引补充 存储过程 事务等

    1.正确使用索引 视图: 关键词 view 视图是体格虚拟表 创建视图 : create view 视图名称 as sql语句; 例: create view t_view as select * f ...

  7. set循环遍历删除特定元素

    使用Iterator迭代器 public class Demo { public static void main(String[] args) { Set<Object> obj = n ...

  8. Vue基础以及指令

    Vue 基础篇一   一.Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~ Vue是一个构建数据驱动的web界面的渐进式框架. 目 ...

  9. 8.4 C++标准输入流

    参考:http://www.weixueyuan.net/view/6410.html 总结: 所谓标准输入是指从标准输入设备中输入设备,通常来讲我们可以将标准输入设备理解为键盘. cin是标准输入类 ...

  10. <Spark Streaming><本地调试>

    写在前面 因为本地电脑没装flume,nginx各种.所以之前写Streaming程序的时候,都是打包了放到集群上跑.就算我在程序代码里不停地logger,调试起来也hin不方便. 于是本地写了两个程 ...