本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
我的github远程仓库的地址:https://github.com/pakhochiu/gitskill.git
一、题目要求:
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:
23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
初步拟定要实现的功能后,估计一下自己需要花多长时间。编程过程中记录自己实际用了多长时间。
然后和同学们比较一下各自程序的功能、实现方法的异同等等。
写博客纪录自己实现的过程和思路。
二、个人软件过程耗时估计与统计表
-
PSP模版表格如下,第3列和第4列分别对应第2列条目的估计时间和真实时间,模版表格里的时间只是示意。
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 6 | 5 |
· Estimate | 估计这个任务需要多少时间 | 20 | 30 |
Development | 开发 | 30 | 20 |
· Analysis | 需求分析 (包括学习新技术) | 5 | 6 |
· Design Spec | 生成设计文档 | 2 | 3 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 0 | 0 |
· Design | 具体设计 | 10 | 12 |
· Coding | 具体编码 | 60 | 40 |
· Code Review | 代码复审 | 0 | 20 |
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 15 |
Reporting | 报告 | 8 | 6 |
· | 测试报告 | 3 | 2 |
· | 计算工作量 | 2 | 1 |
· | 并提出过程改进计划 | 0 |
0 |
三、代码提交
void main()
{
int n,a,right,i=0;
double percent;
printf("请输入题目数量
:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
a=takeTest();
right=right+a;
}
printf("Powerful!
");
printf("The number of right:%d
",right);
percent=((double)right*100.00)/(double)n;
printf("The percent of right:%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("T正确答案是: %d
",getResult(num1,num2,signal));
a=0;
}
return a;
}
提交你的源代码和可执行程序至你的github上