自动生成四则运算题第一版报告
一、需求分析:
需要为小学生生成一个可以自动生成四则运算题的小程序,并储存到外部txt文件中储存,并且需要根据不同的需求控制不同的变量。
二、 功能设计
基本功能 (1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
- 是否包含乘法和除法
- 操作数数值范围可控(如操作数 在100以内 还是1000以内)
- 操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
扩展功能
能实现答案的展示
三、 设计实现
创建了以下函数
signal函数提供随机的运算符号random函数提供随即运算操作数并控制是否有负数fun函数剔除重复算式result函数输出运算结果
以上函数均在主函数内被调用
并在主函数内实现了文件的创建,对运算题目及答案输出的循环,
四、测试运行
五、 粘贴自己觉得比较独特的或满意的代码片段,用博客园正确的代码控件来显示。(提示:要有必要的注释说明,提示:不要贴所有代码!不符合规定的要倒扣分)
//主题函数
for(i=1;i<=n;i++)
{
a=random(x,sym);
b=random(x,sym);
s=signal(f);
fun(a,s,b);
if(result(a,s,b,r)<100)
{
fprintf(fp,"%d%c%d=\n",a,s,b);
fprintf(fp1,"%.2f\n",result(a,s,b,r));
}
else
continue;
}
char signal(int f)//提供随机的运算符号
{ char c[4]={'+','-','*','/'};
if(f==2)
{
return c[rand()%2];
}
else if(f==4)
{
return c[rand()%4];
}
}
//输出结果
if(r==0)
printf("Thanks for your use!");
else
{
switch(s)
{
case '+':return a+b;break;
case '-':return a-b;break;
case '*':return a*b;break;
case '/':return (double)a/b;break;
}
if(s=='/'&&b==0)
printf("ERROR!");
}
//实现外部文件输出并控制输出结果范围
FILE *fp,*fp1;
fp=fopen("result.txt","w+");//创建文件
fp1=fopen("答案.txt","w+");
if(result(a,s,b,r)<100)
{
fprintf(fp,"%d%c%d=\n",a,s,b);
fprintf(fp1,"%.2f\n",result(a,s,b,r));
}
else
continue;
六、总结:
首先实现最基础的自动生成四则运算题算法 然后根据不同的需求增加单一函数 并通过在主函数中的调用实现函数功能 单一部分测试无误之后再进行下一模块的编辑
七、PSP
PSP2.1任务内容计划共完成需要的时间(min)实际完成需要的时间(min)
Planning计划180300· Estimate· 估计这个任务需要多少时间,并规划大致工作步骤180300Development开发130255·· Analysis 需求分析 (包括学习新技术)1530· Design Spec· 生成设计文档55· Design Review· 设计复审 (和同事审核设计文档)1015· Coding Standard 代码规范 (为目前的开发制定合适的规范)33· Design 具体设计1010· Coding 具体编码60120· Code Review· 代码复审712· Test· 测试(自我测试,修改代码,提交修改)2060Reporting报告1520·· Test Report· 测试报告1015· Size Measurement 计算工作量21· Postmortem & Process Improvement Plan· 事后总结 ,并提出过程改进计划35
转载于:https://www.cnblogs.com/Xyz0314777/p/11519005.html