作业要求来源: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("回答正确!!! "); right++; }else{ printf("回答错误!!!正确答案是%.2f ",((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 |