一 需求分析
使用C或Java语言完成一个自动生成四则运算试题的程序
二 功能设计
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三 功能设计
使用c-free软件
利用for switch语句
创建result.txt文件
输入输出函数
四 测试运行
五 代码展示
char szBuff[15];
//写入文件使用
char _cun[10][15];
//产生种子
srand((unsigned)time(NULL));
//声明类型名为file ,用写的格式打开
FILE *fp=fopen("result.txt","w");
//创建四则运算字符
char opera[] = { '*', '/', '+', '-' };
//取出上面单个的字符
char opchar;
//循环十次
for (i = 0; i < 10; i++) {
//产生随机数0 1 2 3
int ope = rand() % 4;
//从字符数组中取出相应运算的字符
opchar = opera[ope];
//为x,y 0-100的随机数 用于计算机
x = (int) ( rand() % 100);
y = (int) ( rand() % 100);
//控制只能进行+ - ,遇到乘除就回for 循环 继续执行
if ('*' == opchar || '/' == opchar) {
i--;
continue;
}
//进入选择相应的运算
switch (opchar) {
case '+':
z = x + y;
break;
case '-':
z = x - y;
break;
case '*':
z = x * y;
break;
case '/':
//排除分母为零的可能
if (y == 0) {
i--;
continue;
}
z = x / y;
break;
}
//控制结果集只能是不大于100的 if 大于回for循环
if (z >= 100 || z < 0) {
i--;
continue;
}
//字符串的拼接 第一个参数是输出的字符串,第二个是格式化字符串
sprintf(szBuff,"%d%c%d=",x,opchar,y);
//字符串的拷贝
strcpy(_cun[i],szBuff);
//去重复
for (j = 0; j <i; ++j) {
if(strcmp(_cun[i],_cun[j])==0){
i--;
continue;
}
}
}
for (j = 0; j < 10; ++j) {
fprintf(fp," %d 题:%s\n",(j+1),_cun[j]);
}
if(fp==NULL)
{
return 0;
}
fclose(fp);
printf("试题已经生成,请进入文件查看result.txt");
return 0;
}
六 总结
七 PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
8 |
7 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
8 |
8 |
Development |
开发 |
82 |
95 |
·· Analysis |
需求分析 (包括学习新技术) |
6 |
15 |
· Design Spec |
· 生成设计文档 |
5 |
8 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
4 |
7 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
3 |
2 |
· Design |
具体设计 |
10 |
15 |
· Coding |
具体编码 |
36 |
30 |
· Code Review |
· 代码复审 |
7 |
8 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
20 |
Reporting |
报告 |
9 |
8 |
·· Test Report |
· 测试报告 |
3 |
3 |
· Size Measurement |
计算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
3 |
2 |