一、需求分析
需要能自动生成四则运算的程序并能控制其中的一些参数,显示在txt文件中
二、功能设计
基本功能
自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
扩展功能
(1)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(2)题目数量可定制
(3)以下相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(4)生成的运算题存储到外部文件result.txt中
三、设计实现
主函数控制并循环生成随机数运算 具体参数由以下变量控制
num1:第一个操作数
num2:第二个操作数
math:随机生成数控制“+”、“-”、“*”、“/“符号
s:题目数量
ctrl:控制是否为2则或4则运算
max:控制操作数范围
sign:控制是否含负数
建立fun函数剔除重复算式
四、测试运行
输入想要应用的参数
显示结果
五、代码片段
1.剔除重复算式
1 int fun(int a,int b,int c) //剔除重复算式 2 { 3 static int p[100][3]; //开辟静态数组 4 static int k=0; //定义静态变量记录数组中所录元素个数 5 int z=0; 6 for(z=0;z<=k;z++) 7 { 8 if (p[z][0]==a && p[z][1]==b && p[z][2]==c) //判断是否与数组录入元素重复 9 return 0; 10 } 11 p[z][0]=a; 12 p[z][1]=b; 13 p[z][2]=c; 14 k++; 15 return 1; 16 }
2.控制符号正负
if(sign == 0) //判断是否含负数 { num1 = 1 + rand() % max; num2 = 1 + rand() % max; } else{ num1 = rand()%(2*max+1)-100; num2 = rand()%(2*max+1)-100; }
3.将输出数据导入文本中
FILE *fp; fp=fopen("E:\\result.txt","w"); fprintf(fp,"%d+%d=%d\n",num1,num2,num1+num2);
六、总结
设计随机四则运算的核心算法,运行无误后
根据客户需求逐一增加算法功能模块,
增加一部分模块后确保算法正常运行无错误,在增加下一部分功能模块。
七、PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
10 |
10 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
10 |
10 |
Development |
开发 |
125 |
195 |
·· Analysis |
需求分析 (包括学习新技术) |
5 |
10 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
· Design |
具体设计 |
10 |
20 |
· Coding |
具体编码 |
60 |
90 |
· Code Review |
· 代码复审 |
30 |
45 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
20 |
Reporting |
报告 |
25 |
20 |
·· Test Report |
· 测试报告 |
10 |
5 |
· Size Measurement |
计算工作量 |
5 |
5 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
10 |
10 |
原文地址:https://www.cnblogs.com/Xwwg/p/11488451.html
时间: 2024-10-10 12:50:50