本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
远程github库:https://github.com/1457668432/Zll2
一、题目要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:
23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
二、功能设计
工具:CodeBlocks
语言:C语言
1、根据输入的数字输出相应数目的随机四则运算题目;
2、用户输入答案并判断输入答案是否正确;
3、输出相应判定结果和运算结果;
三、主要代码
int N;
printf("请输入习题数量:");
scanf("%d",&N);
N=N-1;
int num1, num2, num3, count=0, result,resultTrue,flag;
char op1, op2;
srand(time(NULL));
do
{
count++;
num1 = rand() % 10+1;
num2 = rand() % 10+1;
num3 = rand() % 10+1;
switch (num1 % 4)
{
case 0:
op1 = '+';
break;
case 1:
op1 = '-';
break;
case 2:
op1 = '*';
break;
case 3:
op1 = '/';
break;
default:
break;
}
switch (num2 % 4)
{
case 0:
op2 = '+';
flag = 0;
break;
case 1:
op2 = '-';
flag = 0;
break;
case 2:
op2 = '*';
if((op1=='*')||(op1=='/')) flag = 0;
else flag = 1;
break;
case 3:
op2 = '/';
if((op1=='*')||(op1=='/')) flag = 0;
else flag = 1;
break;
default:
break;
}
printf("%d %c %d %c %d = ",num1,op1,num2,op2,num3);
if(flag==0)
{
resultTrue = 0;
switch (op1)
{
case '+':
resultTrue = num1+num2;
break;
case '-':
resultTrue = num1-num2;
break;
case '*':
resultTrue = num1*num2;
break;
case '/':
resultTrue = num1/num2;
break;
default:
break;
}
switch (op2)
{
case '+':
resultTrue += num3;
break;
case '-':
resultTrue -= num3;
break;
case '*':
resultTrue *= num3;
break;
case '/':
resultTrue /= num3;
break;
default:
break;
}
}
else
{
resultTrue = 0;
switch (op2)
{
case '+':
resultTrue = num2+num3;
break;
case '-':
resultTrue = num2-num3;
break;
case '*':
resultTrue = num2*num3;
break;
case '/':
resultTrue = num2/num3;
break;
default:
break;
}
switch (op1)
{
case '+':
resultTrue = num1 + resultTrue;
break;
case '-':
resultTrue = num1 - resultTrue;
break;
case '*':
resultTrue = num1 * resultTrue;
break;
case '/':
resultTrue = num1 / resultTrue;
break;
default:
break;
}
}
scanf("%d",&result);
if (result == resultTrue)
printf("结果正确!
");
else
printf("结果错误!正确答案为:%d
",resultTrue);
}
while(count<=N);
四、运行结果

五、耗时表
| psp2.1 | Personal Software Process Stages | Time Senior Student | Time |
| Planning | 计划 | 10 | 10 |
| Estimate | 估计这个任务需要多少时间 | 10 | 15 |
| Development | 开发 | 110 | 100 |
| Analysis | 需求分析 (包括学习新技术) | 12 | 15 |
| Design Spec | 生成设计文档 | 1 | 1 |
| Design Review | 设计复审 | 8 | 5 |
| Coding Standard | 代码规范 | 5 | 5 |
| Design | 具体设计 | 15 | 20 |
| Coding | 具体编码 | 40 | 45 |
| Code Review | 代码复审 | 10 | 8 |
| Test | 测试(自我测试,修改代码,提交修改) | 12 | 8 |
| Reporting | 报告 | 8 | 12 |
| . | 测试报告 | 2 | 2 |
| . | 计算工作量 | 8 | 6 |
| . | 提出过程改进计划 | 0 | 0 |