PSP
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
20 |
15 |
· Estimate |
· 估计这个任务需要多少时间 |
15 |
10 |
Development |
开发 |
1000 |
785 |
· Analysis |
· 需求分析 (包括学习新技术) |
45 |
40 |
· Design Spec |
· 生成设计文档 |
20 |
40 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
25 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
8 |
10 |
· Design |
· 具体设计 |
20 |
50 |
· Coding |
· 具体编码 |
10h*60 |
12h*60 |
· Code Review |
· 代码复审 |
1h*60 |
1.5h*60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
3h*60 |
4h*60 |
Reporting |
报告 |
300 |
450 |
· Test Report |
· 测试报告+博客 |
4h*60 |
4.5h*60 |
· Size Measurement |
· 计算工作量 |
10 |
15 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
50 |
50 |
合计 |
|
2578 |
2810 |
这个题目可以被划分为以下三个问题:
#include <tchar.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(NULL)); //避免题目重复
//存放正确答案和用户结果的数组
int daan[100000],jieguo[100000];
int x1,x2,flag,i,j,k;
int x3,x4;
//正确计数器和错误计数器
int count1=0;
int count2=0;
int a[10];
printf("请输入要打印的题目数:");
scanf("%d",&a[0]);
while(a[0]<=0) //题目数必须为正数
{
printf("请重新输入有效的题目数:");
scanf("%d",&a[0]);
};
//可定制运算数的范围
printf("请输入运算数的范围:");
scanf("%d",&a[2]);
while(a[2]<=0) //运算数必须为正数
{
printf("请重新输入有效的范围:");
scanf("%d",&a[2]);
};
//可定制题目中是否有乘除法
printf("请选择否有乘除法(是->1;否->0):");
scanf("%d",&a[1]);
while((a[1]!=1)&(a[1]!=0)) //只能选择1或0
{
printf("请重新输入有效的数值:");
scanf("%d",&a[1]);
};
//可定制题目结果是否有负数
printf("请选择结果有无负数(是->1;否->0):");
scanf("%d",&a[3]);
while((a[3]!=1)&(a[3]!=0)) //只能选择1或0
{
printf("请重新输入有效的数值:");
scanf("%d",&a[3]);
};
//可定制结果是否有余数
printf("请选择结果有无余数(是->1;否->0):");
scanf("%d",&a[4]);
while((a[4]!=1)&(a[4]!=0)) //只能选择1或0
{
printf("请重新输入有效的数值:");
scanf("%d",&a[4]);
};
//可定制是否支持小数
printf("请选择是否支持小数(是->1;否->0):");
scanf("%d",&a[5]);
while((a[5]!=1)&(a[5]!=0)) //只能选择1或0
{
printf("请重新输入有效的数值:");
scanf("%d",&a[5]);
};
//可定制是否加括号
printf("请选择是否加括号(是->1;否->0):");
scanf("%d",&a[6]);
while((a[6]!=1)&(a[6]!=0)) //只能选择1或0
{
printf("请重新输入有效的数值:");
scanf("%d",&a[6]);
};
//循环打印符合要求的题目
for(i=0;i<a[0];i++)
{
switch(a[1])
{
case 1:j=rand()%4;
break; //有乘除法
case 0:j=rand()%2;
break; //无乘除法
}
x1=rand()%a[2]+1;
x2=rand()%a[2]+1;
if(j==0)
{
switch(a[6])
{
case 0:
switch(a[5])
{
case 0:printf("%d+%d=\t\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("%d.%d+%d.%d=\t\t",x1,x3,x2,x4);
break;
}
break;
case 1:
switch(a[5])
{
case 0:printf("(%d+%d)=\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("(%d.%d+%d.%d)=\t",x1,x3,x2,x4);
break;
}
break;
}
//计算当运算法则为加法时的正确结果,并存入数组
jieguo[i]=x1+x2;
}
if(j==1)
{
switch(a[3])
{
case 1:
break;
case 0: //结果无负数
if(x1<x2) //被减数比减数小则交换
{
flag=x1;
x1=x2;
x2=flag;
}
break;
}
switch(a[6])
{
case 0:
switch(a[5])
{
case 0:
printf("%d-%d=\t\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("%d.%d-%d.%d=\t\t",x1,x3,x2,x4);
break;
}
break;
case 1:
switch(a[5])
{
case 0:
printf("(%d-%d)=\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("(%d.%d-%d.%d)=\t",x1,x3,x2,x4);
break;
}
break;
}
//计算当运算法则为减法时的正确结果,并存入数组
jieguo[i]=x1-x2;
}
if(j==2)
{
switch(a[6])
{
case 0:
switch(a[5])
{
case 0:
printf("%d*%d=\t\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("%d.%d*%d.%d=\t\t",x1,x3,x2,x4);
break;
}
break;
case 1:
switch(a[5])
{
case 0:printf("(%d*%d)=\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("(%d.%d*%d.%d)=\t",x1,x3,x2,x4);
break;
}
break;
}
//计算当运算法则为乘法时的正确结果,并存入数组
jieguo[i]=x1*x2;
}
if(j==3)
{
switch(a[4])
{
case 1: //结果可有余数
break;
case 0: //结果无余数
while(x1%x2!=0) //如果不能整除,则重新生成
{
x1=rand()%a[2]+1;
x2=rand()%a[2]+1;
};
break;
}
switch(a[6])
{
case 0:
switch(a[5])
{
case 0:
printf("%d/%d=\t\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("%d.%d/%d.%d=\t\t",x1,x3,x2,x4);
break;
}
break;
case 1:
switch(a[5])
{
case 0:
printf("(%d/%d)=\t",x1,x2);
break;
case 1:
x3=rand()%9+1;
x4=rand()%9+1;
printf("(%d.%d/%d.%d)=\t",x1,x3,x2,x4);
break;
}
break;
}
//计算当运算法则为除法时的正确结果,并存入数组
jieguo[i]=x1/x2;
}
}
for(k=0;k<a[0];k++)
{
printf("\n请输入第%d个答案:",k+1);
scanf("%d",&daan[k]);
//比较结果是否正确,并计数
if(daan[k]==jieguo[k])
{
printf("正确!\n");
count1++;
}
else
{
printf("错误!\n");
count2++;
}
}
printf("\n正确答案有%d个,",count1);
printf("错误答案有%d个。\n",count2);
return 0;
}
《构建之法》第二章中详细提及了好的单元测试的标准。
原文:https://www.cnblogs.com/cyjin30/p/10569028.html