作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
github地址:https://github.com/sizhanhe/-
一、题目要求
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
二、设计思路
编程语言:c语言
工具:
设计思路:主函数让用户输入要练习的题目数量;而后随机产生随机数和随即运算符并产生运算式;判别用户输入的结果是否与正确答案一致,提示输入值是否正确,答题继续。答题完毕后,统计错对情况给出判别数据。
类。
四、主要代码
srand((unsigned int)time(NULL));
for(i=1;i<=n;i++){
lab1:
//随机生成三个数
oneNum = rand()%100;
twoNum = rand()%100;
threeNum = rand()%100;
//随机生成运算符
firstSymbol = rand()%4;
secondSymbol = rand()%4;
//判断运算符优先级
if(firstSymbol < secondSymbol ){
sum = operation(twoNum,threeNum,secondSymbol);
sum = operation(oneNum,sum,firstSymbol);
}else{
sum = operation(oneNum,twoNum,secondSymbol);
sum = operation(sum,threeNum,firstSymbol);
}
//看结果是否为负数,负数重新生成
if(sum <= 0) goto lab1;
//打印出题目
printf("%d %c %d %c %d = ",oneNum,Symbol(firstSymbol),twoNum,Symbol(secondSymbol),threeNum,sum);
//比对答案是否正确
scanf("%f",&answer);
if((int)(100*sum+0.5)/100 == (int)(100*answer+0.5)/100){
printf("回答正确!!!\n");
right++;
}else{
printf("回答错误!!!正确答案是%.2f\n",((100*sum+0.5)/100));
}
}
/*
函数名:opreation
函数功能:进行+、-、*、/运算
参数:a,b运算数,symbol运算符号
返回值:运算结果 sum
*/
float operation(int a,int b,int symbol){
float sum;
if(symbol == 0) sum = a+b;
else if(symbol == 1) sum = a-b;
else if(symbol == 2) sum = a*b;
else sum = (float)a/(float)b;
return (sum);
}
/*
函数名:Symbol
功能:将随机数转换为对应得运算符号
参数:numSymbol
返回值:symbol
*/
char Symbol(int numSymbol){
char symbol;
if(numSymbol == 0) symbol = '+';
else if (numSymbol == 1) symbol = '-';
else if (numSymbol == 2) symbol = '*';
else symbol = '/';
return symbol;
}
五、运行结果
六、个人软件过程耗时估计与统计表
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 5 | 15 |
Estimate | 估计这个任务需要多少时间 | 10 | 12 |
Development | 开发 | 25 | 30 |
Analysis | 需求分析 (包括学习新技术) | 2 | 50 |
Design Spec | 生成设计文档 | 4 | 5 |
Design Review | 设计复审 | 3 | 3 |
Coding Standard | 代码规范 | 1 | 1 |
Design | 具体设计 | 10 | 12 |
Coding | 具体编码 | 10 | 50 |
Code Review | 代码复审 | 2 | 2 |
Test | 测试(自我测试,修改代码,提交修改) | 1 | 1 |
Reporting | 报告 | 3 | 3 |
测试报告 | 1 | 1 | |
计算工作量 | 2 | 3 | |
并提出过程改进计划 | 1 | 1 |