本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
远程github库:https://github.com/lamonein/code
一、题目要求:
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
二,设计思路:
工具:visual c++
语言:C语言
思路:1、先定义好需要的变量,把三个随机数,四个随机符号,记录错题的变量和正确率定义好
2、设计好需要用到的函数:fangfa()函数就是计算的方法,用户输入题目个数后直接调用fangfa()这个函数进行计算。calculate函数用户计算。add,mul,div,sub等四个函数用于简单的四 则运算 。symbol函数用于符号的随机产生。
3、各函数的重点方法,fangfa函数中运用了指针的知识,srand((unsigned)time(NULL))指定指针,后再用rand函数来弄出随机数和随机符号,之后用连续赋值的思路(三个数连续计算,先计算乘除后计算加减,没有乘除加减的话先算前面两个数得出答案后再用这个答案和接下来的数计算)得出答案,然后输出题目,假如回答正确,计分,回答不正确,不计分。在符号的产生中用到switch case来随机产生0-3种情况来决定符号值。
三 主要代码(连续赋值部分)
四 结果显示
五 主要问题
太久没用C语言了,思路还是比较清晰的,可是部分语法需要查书才可以用(例如指针部分)把伪随机数变为真随机数,通过函数srand( (unsigned)time( NULL ) );,这个代码是基于大一时老师的简单四则运算上改进的,所以有很多问题避免了,但是我发觉这个四则运算的容错很差,没有去进行改进,界面也比较简单,但是基本功能是能够实现的,开始老师的基础是两个数连加的,现在布置作业是三个数连加,在这个基础上我又遇上了问题,所以最后改成先运算两个后再运算一个,这样就解决了问题了。对于这次作业比较好的就是能够完成基本功能,美中不足的就是容错差,界面简单。
六 时间表(单位为min)
PSP 2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 5 | 20 |
Estimate | 估计这个任务要多少时间 | 120 | 120 |
Development | 开发 | 70 | 60 |
Analysis | 需求分析(包括学习新技术) | 5 | 20 |
Design Spec | 生成设计文档 | 0 | 0 |
Design Review | 设计复审 | 0 | 0 |
Coding Standard | 代码规范 | 5 | 20 |
Design | 具体设计 | 40 | 30 |
·Coding | 具体编译 | 40 | 30 |
Code Review | 代码复审 | 0 | 0 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 |
Reporting | 报告 | 20 | 15 |
测试报告 | 0 | 0 | |
计算工作量 | 5 | 5 | |
并提出过程计划 | 0 | 0 |