- 作业要求地址:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
- Github地址:https://github.com/Tily288/Tily
一、时间计划与实际使用时间
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 12 | 8 |
· Estimate | 估计这个任务需要多少时间 | 10 | 6 |
Development | 开发 | 82 | 88 |
· Analysis | 需求分析 (包括学习新技术) | 6 | 10 |
· Design Spec | 生成设计文档 | 5 | 6 |
· Design Review | 设计复审 | 4 | 6 |
· Coding Standard | 代码规范 | 4 | 4 |
· Design | 具体设计 | 10 | 12 |
· Coding | 具体编码 | 36 | 21 |
· Code Review | 代码复审 | 7 | 9 |
· Test | 测试(自我测试,修改代码,提交修改) | 15 | 30 |
Reporting | 报告 | ||
· | 测试报告 | ||
· | 计算工作量 | 3 | 2 |
· | 并提出过程改进计划 | 4 | 3 |
二、题目要求
任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数。
三、代码提交
#include<stdio.h> #include<stdlib.h> #include<time.h> char getSignal(); //获取随机运算符的函数 int random(double,double); //获取随机数函数 int getResult(int,int,char); //结果计算函数 int takeTest(); //题目生成函数 void main() { int i,n,a,right=0; double percent; printf("请输入题目的数量:"); scanf("%d",&n); for(i=0;i<n;i++) { a=takeTest(); right=right+a; } printf("回答正确! "); printf("正确答案为:%d ",right); percent=((double)right*100.00)/(double)n; printf("正确率为:%0.2f %% ",percent); } char getSignal() { char signal[4]={'+','-','*','/'}; srand((unsigned)time(NULL)); return signal[rand()%4]; } int random(double start, double end) { return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0)); } int getResult(int num1,int num2,char signal) { int res; switch(signal) { case '+': res=num1+num2;break; case '-': res=num1-num2;break; case '*': res=num1*num2;break; case '/': res=num1/num2;break; default: printf("运算符错误! "); } return res; } int takeTest() { int get; int num1,num2,a; char signal; srand((unsigned)time(NULL)); signal=getSignal(); num1=random(0,1000); num2=random(1,1000); if(signal=='-') { if(num1<num2) { int temp; temp=num1; num1=num2; num2=temp; } } if(signal=='/') { if(num2==0) { int temp; temp=num1; num1=num2; num2=temp; } } printf("%d%c%d=",num1,signal,num2); scanf("%d",&get); fflush(stdin); //清空输入缓冲区 if(getResult(num1,num2,signal)==get) { printf("回答正确! "); a=1; } else { printf("回答错误! "); printf("正确答案为: %d ",getResult(num1,num2,signal)); a=0; } return a; }
四、需求分析
用户控制生成题目的个数,并能够自动随机生成加减乘除四则运算,运算包括整数的运算,答完题后生出正确答案,并在最后能统计答题正确数与正确率。
五、设计
开发工具:Visio c++ 6.0
编程语言:C语言
函数设计:char getSignal()用于获取随机运算符函数
int random(double,double)用于获取随机数函数
int getResult(int,int,char)用于结果计算函数
int takeTest()用于题目生成函数
五、遇到的问题与解决
对C语言的编辑代码已经忘了很多了,写代码的时候遇到了很多问题,一个小小的代码写了好久都有很多问题,最后在同学的帮助下进行了更正。