20194670自动生成四则运算题第一版报告
一、需求分析
数学的学习伴随着每个学生的整个学生时代,小学数学的学习尤为关键,小学数学学习的好坏直接影响到后续对于数学的学习。
四则运算,是数学学习的基础,所以在孩子学习四则运算的阶段,家长们普遍都会给自己的孩子设计大量的习题进行练习。但由于大部分家长工作很忙,回到家还要做家务等琐事,设计四则运算的练习题以及判断孩子的运算结果则显得很费时间。所以,一款根据家长的需求,使用计算机来生成随机的四则运算习题,就帮助家长们解决了一个很大的难题。
二、功能设计
基本功能:
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 和2 + 3是重复算式,而2 + 3 和3 + 2不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三、设计实现
本c语言程序一共包含四个函数。
main():主函数,作为程序的入口。在主函数中,根据用户选择,进行调用naomal()和set()两个函数。
normal():实现程序的基本功能,即出10道运算结果在100以内的,包含加减乘除的四则运算式。
set():设置函数,可以对一些参数进行设置。可设置出题的总数、结果的范围、是否包含乘除法。在该函数内设置完相关参数后,调用SecKind()进行出题。
SecKind():该函数的形参接收set()传过来的参数值,根据参数值进行出题。
四、测试运行
上图为程序的首页,通过输入数字选择模式
上图为输入1之后,进入普通模式
上图为输入2之后,进入自定义模式设置参数
五、代码片段
该片段为SecKind()的部分代码,主要实现的功能是,通过形参接收set()中设置的变量,此段代码为生成不含乘除法的代码。
int SecKind(int aa,int bb,int cc)
{
Sleep(2000);//延时2秒
system("cls");//清屏
int a=0;
int b=0;
int mode=0;//0:加 1:减 2:乘 3:除
int c=0;
int result=0;
int score=0;
int n;
srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
if(cc==0)
{
for(int i=0;i<aa;) //做n题
{
a = rand() % 10; //生成一个0~9之间的随机数
b = rand() % 10; //生成一个0~9之间的随机数
mode = rand() % 2; //生成一个0~1之间的随机数,代表运算符
printf("%d", a); //打印算式
switch(mode) //确定运算符
{
case 0:printf("+ ");
result= a + b;break;
case 1:printf("- ");
result= a - b;break;
default:printf("somethingis wrong!\n");break;
}
printf("%d = \n", b);
if(result<=bb)
i++;
}
}
}
六、总结
对于该程序,我根据需求描述,将程序功能分为两个大功能。即普通模式和自定义模式,对于不同的功能,写出对于的函数,以实现“模块化”的要求。
七、PSP
任务内容 | 计划时间 | 实际时间 |
---|---|---|
计划 | 10 | 10 |
需求分析 | 5 | 10 |
设计文档 | 10 | 8 |
复审文档 | 5 | 10 |
代码规范 | 3 | 3 |
具体设计 | 10 | 10 |
具体编码 | 15 | 25 |
代码复审 | 5 | 5 |
编译运行 | 2 | 2 |
测试 | 5 | 5 |
计算共工作量 | 2 | 2 |
总结 | 5 | 5 |
原文地址:https://www.cnblogs.com/whohow/p/11522247.html
- java发送邮件功能,以发送qq邮件为例
- spring boot加载复杂的yml文件获取不到值的问题
- JUC包下的CountDownLatch,CyclicBarrier,Semaphore
- java队列,ArrayBlockingQueue
- 多线程使用wait和notify做生产者消费者模型导致线程全部假死
- 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
- java 多线程暂停与恢复:suspend,resume
- ArrayList底层实现
- Master-work模式
- Condition控制线程通信:java三个线程循环打印ABC
- java根据wait,notify,synchronize关键字自定义队列
- ActiveMQ几个重要的配置文件
- TiDB 在 Ping++ 金融聚合支付业务中的实践
- 设计模式之装饰模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- uninstalling vim-minimal 同时也卸载了 sudo 解决方法
- 大点干!早点散----------深入剖析缓存加速--squid(反向代理与ACL访问控制以及sarg日志)
- JVM的Xms和Xmx参数设置为相同值有什么好处?
- 【CVPR 2020】一种新的门控通道注意力转换单元
- 5个好用的 CSS 函数
- java1.8中Object类源码分析
- 多线程基础(六):Object的wait方法以及notify与notifyAll的区别
- Day15:反转链表
- Day16:合并两个排序的链表
- 大厂面试爱问的「调度算法」,20 张图一举拿下
- Day17:树的子结构
- 多线程基础(七):关于HotSpot中notify方法不具备随机性的证明
- Day18:二叉树的镜像
- ksubdomain 无状态域名爆破工具
- Day19:顺时针打印矩阵