需求分析:
设计一个能够自动生成小学生四则运算试题的程序。使用C语言或者Java语言(这里使用的是C语言,编译器为vc++ 6.0)
设计功能:
- 基本功能:
自动生成10道100以内的2个操作数的四则运算算式(+-*/),运算结果在100以内
剔除重复算式(2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式)
题目数量可定制
相关参数可控制,是否包含乘法和除法,操作数数值范围可控(如操作数 在100以内 还是1000以内),操作数是否含负数
生成的运算题存储到外部文件result.txt中
- 扩展功能:
两个随机数相乘,结果大于100的容错
两个随机数相减,结果为负数的容错
设计实现:
C语言没有类的概念。函数为C语言自带的头文件函数<stdlin.h>,<stdio.h>
测试运行:
因为使用了freopen("D:\\result.txt", "w", stdout);代码,所以产生的结果不会在c的命令行中出现,结果直接保存到了D盘的result.txt文档中,result.txt中所得的四则运算不一定为10条,因为随机数相减为负数的四则运算并未打印,下图代码为红色的部分并未运行,只是做了容错,去掉注释之后可以运行。
case 1: result=first_num-second_num; //小学没有正负数的概念,如果产生正负数则跳过此题 if(result<0) { //如果出现负数,重新生成新的随机数字,直到结果出现正数为止,增加了时间复杂度 /*while(1) { if(result<0) { first_num=rand()%50; second_num=rand()%50; result=first_num-second_num; } else if(result>=0) { printf("%d-%d=%d\n",first_num,second_num,result); break; } }*/ continue; } else printf("%d-%d=%d\n",first_num,second_num,result); break;
代码展示:
//小学没有正负数的概念,如果产生正负数则跳过此题 if(result<0) { //如果出现负数,重新生成新的随机数字,直到结果出现正数为止,增加了时间复杂度 /*while(1) { if(result<0) { first_num=rand()%50; second_num=rand()%50; result=first_num-second_num; } else if(result>=0) { printf("%d-%d=%d\n",first_num,second_num,result); break; } }*/ continue; }
//对结果超过100的进行容错,当两个随机数相乘大于100,重新生成新的随机数 if(result>100) { first_num=rand()%10; second_num=rand()%10; result=first_num*second_num; }
总结:
在进行设计时,先对需要设计的程序进行了分部设计。如先设计代码的主体功能:实现程序的四则运算,当主体功能能够进行实现,在进行程序的容错处理,例如结果在100以内的容错,小学不存在负数概念的容错等等,最后进行代码测试。
Psp:
任务内容 |
计划功完成需要时间(min) |
时间完成需要时间(min) |
估计任务所需时间以及大致步骤 |
10 |
8 |
开发 |
150 |
160 |
需求分析 |
3 |
4 |
生成设计文档 |
20 |
40 |
代码规范 |
6 |
5 |
具体设计 |
20 |
10 |
具体编码 |
120 |
180 |
测试 |
30 |
50 |
测试报告 |
20 |
30 |
计算工作量 |
2 |
2 |
事后总结 |
20 |
60 |
原文地址:https://www.cnblogs.com/-123/p/11527721.html
时间: 2024-11-01 00:41:23