第四次作业:个人项目-小学四则运算 “软件”之初版
本次作业要求来自: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("结果正确!\n"); else printf("结果错误!正确答案为:%d \n",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 |