这个作业属于哪个课程 | <AHPU-软件工程导论-计算机18级> |
---|---|
这个作业要求在哪里 | <四则运算题目生成程序> |
这个作业的目标 | 四则运算的出题软件,并且拓展了更详细具体的要求 |
学号 | 3180701110 |
题目要求
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:
1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
2)程序要求能处理用户的输入,判断对错,累积分数
3)程序支持可以由用户自行选择加、减、乘、除运算
4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
代码
获取随机运算符
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 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,10);
num2=random(1,10);
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("You're right!
");
a=1;
}
else
{
printf("错误!
");
printf("正确答案是: %d
",getResult(num1,num2,signal));
a=0;
}
return a;
}
主函数
void main()
{
int n,a,right=0;
double percent;
printf("请输入题目数量:");
scanf("%d",&n);
for(int 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);
}
运行结果
psp表格
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 30 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 20 |
Development | 开发 | 100 | 300 |
Analysis | 需求分析(包括学习新技术) | 20 | 20 |
Design Spec | 生成设计文档 | 10 | 10 |
Design Review | 设计复审 | 15 | 15 |
Coding Standard | 代码规范 | 10 | 10 |
Design | 具体设计 | 10 | 10 |
Coding | 具体编码 | 40 | 40 |
Code Review | 代码复审 | 5 | 5 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 3 | 4 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 5 | 5 |
个人小结 | |||
这次随笔,不仅是设计了相应的代码,更多的任务在摸索使用博客园的编辑器上。让我学习到很多。 |