1.需求分析:
(1)自动生成四则运算算式(+ - * /),或两则运算(+ -)。
(2)剔除重复算式。
(3)题目数量可定制。
(4)相关参数可控制。
(5)生成的运算题存储到外部文件中。
2.功能设计:
- 基本功能:随机生成算式,可控制题目数量及相关参数。筛选重复的算式并剔除。
- 拓展功能:当操作数生成负数是会产生小括号。
3.设计实现:
共设计了4个函数:Ctrl_2or4:用来控制四则运算还是2则运算。
Rand_Get:生成随机数,是否包含负数可控。
Data_Filtering:数据过滤,剔除重复算式。
My_print:控制输出。
4.测试运行:
1.生成四则运算,包含负数,操作数100以内,10道题:
2.生成两则运算,不包含负数,操作数50以内,15道题:
3.生成四则运算,包含负数,操作数范围1000以内,7道题:
5.代码片段:
- 生成随机数,控制操作数是否带负数:
void Rand_Get(int c , int Maxl)
{
if( c == )
{
Num_a = rand()%(*Maxl+)-Maxl;
Num_b = rand()%(*Maxl+)-Maxl;
}
else if( c == )
{
Num_a = rand()%Maxl;
Num_b = rand()%Maxl;
}
else
{
printf("输入有误!");
}
}
- 数据筛选,剔除重复算式:
int Data_Filtering(int flag )
{
int j,f3_flag,equ[Maxsize][]; f3_flag = ;
equ[i][]=Num_a;
equ[i][]=flag;
equ[i][]=Num_b;
for(j=i-;j>=;j--)
{
if(equ[i][] == equ[j][])
{
if(equ[i][] == equ[j][])
{
if(equ[i][] == equ[j][])
{
i--;
f3_flag = ;
}
}
}
}
i++;
return f3_flag ;
}
- 控制是两则运算(+ -)还是四则运算(+ - * /):
int Ctrl_2or4(int b)
{ int f2_c;
if(b == )
{
f2_c = rand()%;
}
else if(b == )
{
f2_c = rand()%;
}
else
{
printf("输入有误!");
}
return f2_c;
}
6.总结(如何实现程序“模块化”原则):
利用函数,分层次分模块进行代码编写,将每个功能用函数描述出来,而不是全部都写在主函数里。
7.PSP:
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
15 |
20 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
15 |
20 |
Development |
开发 |
410 |
520 |
·· Analysis |
需求分析 (包括学习新技术) |
10 |
20 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
5 |
· Design |
具体设计 |
15 |
20 |
· Coding |
具体编码 |
360 |
450 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
15 |
Reporting |
报告 |
30 |
45 |
·· Test Report |
· 测试报告 |
20 |
25 |
· Size Measurement |
计算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
10 |
20 |