一、需求分析
系统运算速度在许多方面上要远远超过人的大脑,在实际工作中能够代替人类的部分脑力劳动,尽管出几道算术题并不是什么难事,但是要求繁多,时间久了也是个费时费力费脑的事,所以正需要一道程序解决此问题。
二、功能设计
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),运算结果也在100以内
(2)剔除重复算式。2+3=和2+3=是重复算式,2+3=和3+2=不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三、设计实现
C语言实现,软件Dev-c++,其中随机生成数字需使用到rand()函数,并通过for,switch,while等控制语句实现条件的各种选择问题。
四、测试运行
五、代码片段
1、控制随机数的正负
1 int back_k(int fushu1) 2 { int k; 3 if(fushu1==1) 4 { 5 k=rand()%2; 6 switch(k) 7 { 8 case 0:return 1; 9 case 1:return -1; 10 }; 11 }else return 1; 12 }
2、多次可控生成题目
1 do{
........... 3 Snumber:printf("请输入生成题目数量(0~100),退出程序(-1):"); 4 scanf("%d",&number); 5 if(number>100||number<-1) 6 { 7 printf("错误,请重新输入\n"); 8 goto Snumber; 9 } 10 else if(number==-1)goto end; .......... 12 }while(number!=-1);
3、生成文件输出数据并保存
..........
1 FILE*fp; 2 fp=fopen("result.txt","w+");//创建文件;
............ 4 fprintf(fp,"%5d %c %d =\n",a,c,b); 5 ............
六、总结
此次题目可选项较多,就像是一个有着很多分支的树杈,所以要照顾到每条可能走过的路径,乍一想感觉特别混乱不知如何下手,但实际编写的时候也还是混乱...有心无力,一度崩溃,不会拆分解决问题,耗费太多时间,编写后反反复复修改增加功能(我好难o(╥﹏╥)o),所以该程序还可以把多次使用的部分用函数替换,多次调用,节省时间空间。通过此次作业,我深刻体会到了与其他同学的差距,革命尚未成功,同志还需努力!!
七、PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
20 |
30 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
360 |
980 |
Development |
开发 |
10 |
20 |
Analysis |
需求分析 (包括学习新技术) |
10 |
20 |
Design Spec |
生成设计文档 |
5 |
20 |
Design Review |
设计复审 (和同事审核设计文档) |
20 |
0 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
Design |
具体设计 |
60 |
120 |
Coding |
具体编码 |
180 |
720 |
Code Review |
代码复审 |
5 |
10 |
Test |
测试(自我测试,修改代码,提交修改) |
20 |
20 |
Reporting |
报告 |
10 |
10 |
Test Report |
测试报告 |
5 |
5 |
Size Measurement |
计算工作量 |
5 |
5 |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
10 |
20 |