作业二
1.预习讲义第二部分
- 软件开发流程
软件工程包括了开发,运营,维护软件过程中有很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一
个体系中,这就叫“软件开发流程” - 软件开发流程的目的
提高软件开发,运营,维护的效率,以及用户的满意度,可靠性和软件的可维护性。
软件开发流程不光指团队流程,是每一个人在做具体的软件开发、测试、维护等。而个人的流程组织起来就是团队的流程. - 所以对于个人软件工程师来说,他需要具备
- 一定的编程能力:对具体技术的掌握
- 具备对问题领域的知识和经验储备
- 通用的软件设计思想
- 职业技能,包括自我管理的能力;表达和交流的能力;与人合作的能力;把任务按质按量完成的执行能力。
2.个人程序
- 题目:写一个能够自动生成小学四则运算题目的命令行“软件”。可以使用C,C++,C#等语言实现
- 要求:
- 分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
- 要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
- 对于三、四、五年级需要支持括号与多个运算符
- 程序支持判断对错及累计得分与时间
- 一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
- 充分发挥想象增加满足小学生数学检测需要的功能
代码部分:
#include<cstdlib>
int kuohao[150],N=10;double x[150],y[150],z[150],result[150];char A1[150],A2[150];
char A[4]={'+','-','*','/'};
using namespace std;
/*一年级难度一支持5以内加减法,难度二支持10以内加减法,难度三支持20以内加减法;*/
void yi(int nd){
int i,j,k,k1,k2,m,bo,xs,count=0,r;
for(int i1=0;i1<1000;i1++){
bo=0;xs=0;
k1=rand()%2;k2=rand()%2;
if(nd==1){
i=rand()%6;j=rand()%6;k=rand()%6;
}
else if(nd==2){
i=rand()%11;j=rand()%11;k=rand()%11;
}
else{
i=rand()%21;j=rand()%21;k=rand()%21;
}
if(count<N){
if(k1==1&&i<j){m=i;i=j;j=m;}
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
}
if(bo==0){
if(k1==0){r=i+j;xs=1;}
else{r=i-j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else if(count>=N&&count<100){
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j&&A2[j1-N]==A[k2]&&z[j1-N]==k){bo=1;break;}
}
if(bo==0){
if(k1==0&&k2==0){r=i+j+k;xs=1;}
else if(k1==0&&k2==1&&i+j>=k){r=i+j-k;xs=1;}
else if(k1==1&&k2==0&&i-j+k>=0){r=i-j+k;xs=1;}
else if(k1==1&&k2==1&&i-j-k>=0){r=i-j-k;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;A2[count-N]=A[k2];z[count-N]=k;result[count++]=r;
}
}
}
else break;
}
}
/*二年级难度一支持两位数加减法(100以内)和6以内乘法口诀,难度二支持两位数加减和
9以内乘法口诀,难度三支持两位数加减和10以内乘除混合运算*/
void er(int nd){
int i,j,k,k1,k2,m,bo,xs,count=0,r;
for(int i1=0;i1<1000;i1++){
bo=0;xs=0;
if(nd==1||nd==2){
if(count<N){i=rand()%100;j=rand()%100;k1=rand()%2;}
else if(count>=N&&count<100){
k1=rand()%2+2;
if(nd==1){i=rand()%5+1;j=rand()%5+1;}
else{i=rand()%9+1;j=rand()%9+1;}
}
if(k1==1||k1==3){m=i;i=j;j=m;}
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
}
if(bo==0){
if(k1==0&&i+j<100){r=i+j;xs=1;}
else if(k1==1&&i>=j){r=i-j;xs=1;}
else if(k1==2){r=i*j;xs=1;}
else if(k1==3&&i%j==0){r=i/j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else{
if(count<N){
i=rand()%100;j=rand()%100;k1=rand()%2;
if(k1==1&&i<j){m=i;i=j;j=m;}
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
}
if(bo==0){
if(k1==0&&i+j<100){r=i+j;xs=1;}
else if(k1==1&&i>=j){r=i-j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else if(count>=N&&count<100){
i=rand()%10;j=rand()%10;k=rand()%10;k1=rand()%2+2;k2=rand()%2+2;
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j&&A2[j1-N]==A[k2]&&z[j1-N]==k){bo=1;break;}
}
if(bo==0){
if(k1==2&&k2==2){r=i*j*k;xs=1;}
else if(k1==2&&k2==3&&k!=0&&i*j%k==0){r=i*j/k;xs=1;}
else if(k1==3&&k2==2&&j!=0&&k!=0&&i%j==0){r=i/j*k;xs=1;}
else if(k1==3&&k2==3&&j!=0&&k!=0&&i%j==0&&i/j%k==0){r=i/j/k;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;A2[count-N]=A[k2];z[count-N]=k;result[count++]=r;
}
}
}
else break;
}
}
}
/*三年级难度一支持两位数加减和一位数与两位数的乘除,难度二支持三位数加减和一位数和
三位数的乘除,难度三支持三位数加减和一位数的四则运算*/
void san(int nd){
int i,j,k,k1,k2,m,bo,xs,count=0,r;
for(int i1=0;i1<1000;i1++){
bo=0;xs=0;
if(nd==1||nd==2){
if(count<N){
k1=rand()%2;
if(nd==1){i=rand()%100;j=rand()%100;}
else{i=rand()%1000;j=rand()%1000;}
}
else if(count>=N&&count<100){
k1=rand()%2+2;
if(nd==1){
i=rand()%100;
if(i<10)j=rand()%90+10;
else j=rand()%9+1;
}
else{
i=rand()%1000;
if(i<10)j=rand()%900+100;
else j=rand()%9+1;
}
}
if(k1==1&&i<j){m=i;i=j;j=m;}
for(int j1=0;j1<count;j1++)
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
if(bo==0){
if(k1==0){r=i+j;xs=1;}
else if(k1==1&&i>=j){r=i-j;xs=1;}
else if(k1==2){r=i*j;xs=1;}
else if(k1==3&&i%j==0){r=i/j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else{
if(count<N){
i=rand()%1000;j=rand()%1000;k1=rand()%2;
if(k1==1&&i<j){m=i;i=j;j=m;}
for(int j1=0;j1<count;j1++){
if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}}
if(bo==0){
if(k1==0){r=i+j;xs=1;}
else if(k1==1&&i>=j){r=i-j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else if(count>=N||count<100){
int wz;
i=rand()%10;j=rand()%10;k=rand()%10;k1=rand()%4;k2=rand()%4;wz=rand()%2+1;
for(int j1=0;j1<count;j1++){
if(kuohao[j1-N]==wz&&x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j&&A2[j1-N]==A[k2]&&z[j1-N]==k){bo=1;break;}
}
if(bo==0){
if(wz==1){
if(k1==0&&k2==2){r=(i+j)*k;xs=1;}
else if(k1==0&&k2==3&&k!=0&&(i+j)%k==0){r=(i+j)/k;xs=1;}
else if(k1==1&&k2==2&&i-j>=0){r=(i-j)*k;xs=1;}
else if(k1==1&&k2==3&&k!=0&&i>=j&&(i-j)%k==0){r=(i-j)/k;xs=1;}
else if(k1==2&&k2==0){r=(i*j)+k;xs=1;}
else if(k1==2&&k2==1&&i*j-k>=0){r=(i*j)-k;xs=1;}
else if(k1==3&&k2==0&&j!=0&&i%j==0){r=i/j+k;xs=1;}
else if(k1==3&&k2==1&&j!=0&&i%j==0&&i/j-k>=0){r=i/j-k;xs=1;}
}
else{
if(k1==0&&k2==2){r=i+j*k;xs=1;}
else if(k1==0&&k2==4&&k!=0&&j%k==0){r=i+j/k;xs=1;}
else if(k1==1&&k2==2&&i-j*k>=0){r=i-j*k;xs=1;}
else if(k1==1&&k2==3&&k!=0&&j%k==0&&i-j/k==0){r=i-j/k;xs=1;}
else if(k1==2&&k2==0){r=i*(j+k);xs=1;}
else if(k1==2&&k2==1&&j-k>=0){r=i*(j-k);xs=1;}
else if(k1==3&&k2==0&&(j+k)!=0&&i%(j+k)==0){r=i/(j+k);xs=1;}
else if(k1==3&&k2==1&&j-k>0&&i%(j-k)==0){r=i/(j-k);xs=1;}
}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;A2[count-N]=A[k2];z[count-N]=k;kuohao[count-N]=wz;result[count++]=r;
}
}
}
}
if(count==100)break;
}
}
/*四年级难度一支持10以内小数加减法和两位数乘除(不全整除),难度二支持100以内小数加减
和两位数四则运算,难度三支持两位数与三位数乘除和千以内四则运算*/
void si(int nd){
int k,k1,k2,bo,xs,wz,count=0;
for(int i1=0;i1<1000;i1++){
bo=0;xs=0;
if(nd==1){
double r;double i,j;
if(count<N){
i=(rand()%900+100)/(double)100;j=(rand()%900+100)/(double)100;k1=rand()%2;
}
else{
i=(double)(rand()%90+10);j=(double)(rand()%90+10);k1=rand()%2+2;
}
for(int j1=0;j1<count;j1++)if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
if(bo==0&&count<100){
if(count<N&&k1==0){r=i+j;xs=1;}
else if(count<N&&k1==1&&i>=j){r=i-j;xs=1;}
else if(count>=N&&k1==2){r=i*j;xs=1;}
else if(count>=N&&k1==3&&i/j*1000-(int)(i/j*100)*10==0){r=i/j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
else if(nd==2){
double r;double i,j;
if(count<N){
if(nd==2){
i=(rand()%10000)/(double)100;j=(rand()%10000)/(double)100;k1=rand()%2;
for(int j1=0;j1<count;j1++)if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
if(bo==0){
if(k1==0){r=i+j;xs=1;}
else if(k1==1&&i>=j){r=i-j;xs=1;}
if(xs==1){
x[count]=i;y[count]=j;A1[count]=A[k1];result[count++]=r;
}
}
}
else{
i=rand()%990+10;k1=rand()%2+2;
if(i<100){j=rand()%900+100;}
else{ j=rand()%90+10;}
for(int j1=0;j1<count;j1++)if(x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j||(x[j1]==j&&A1[j1]==A[k1]&&y[j1]==i)){bo=1;break;}
if(bo==0){
if(k1==2){r=i*j;xs=1;}
else if(k1==3&&i/j*1000-(int)(i/j*100)*10==0){r=i/j;xs=1;}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;result[count++]=r;
}
}
}
}
else{
if(nd==2){i=(double)(rand()%90+10);j=(double)(rand()%90+10);k=(double)(rand()%90+10);}
else{i=(double)(rand()%990+10);j=(double)(rand()%990+10);k=(double)(rand()%990+10);}
k1=rand()%4;k2=rand()%4;wz=rand()%2+1;
for(int j1=0;j1<count;j1++){
if(kuohao[j1-N]==wz&&x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j&&A2[j1-N]==A[k2]&&z[j1-N]==k){bo=1;break;}
}
if(bo==0){
if(wz==1){
if(k1==0&&k2==2){r=(i+j)*k;xs=1;}
else if(k1==0&&k2==3){r=(i+j)/k;xs=1;}
else if(k1==1&&k2==2&&i-j>=0){r=(i-j)*k;xs=1;}
else if(k1==1&&k2==3&&i>=j){r=(i-j)/k;xs=1;}
else if(k1==2&&k2==0){r=(i*j)+k;xs=1;}
else if(k1==2&&k2==1&&i*j-k>=0){r=(i*j)-k;xs=1;}
else if(k1==3&&k2==0){r=i/j+k;xs=1;}
else if(k1==3&&k2==1&&i/j-k>=0){r=i/j-k;xs=1;}
}
else{
if(k1==0&&k2==2){r=i+j*k;xs=1;}
else if(k1==0&&k2==4){r=i+j/k;xs=1;}
else if(k1==1&&k2==2&&i-j*k>=0){r=i-j*k;xs=1;}
else if(k1==1&&k2==3&&i-j/k>=0){r=i-j/k;xs=1;}
else if(k1==2&&k2==0){r=i*(j+k);xs=1;}
else if(k1==2&&k2==1&&j-k>=0){r=i*(j-k);xs=1;}
else if(k1==3&&k2==0){r=i/(j+k);xs=1;}
else if(k1==3&&k2==1&&j-k>0){r=i/(j-k);xs=1;}
}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;A2[count-N]=A[k2];z[count-N]=k;kuohao[count-N]=wz;result[count++]=r;
}
}
}
}
if(count==100)break;
}
}
/*五年级难度一支持10以内小数乘法及四则运算,难度二支持10以内和20以内小数除法(保留整数),
难度二支持10以内和20以内小数除法(保留两位数)*/
void wu(int nd){
int k1,k2,m,bo,xs,count=0,r,wz;
for(int i1=0;i1<1000;i1++){
double i,j,k;
bo=0;xs=0;
if(nd==1){
if(count<N){
i=(rand()%900+100)/(double)100;j=(rand()%900+100)/(double)100;
for(int j1=0;j1<count;j1++)if(x[j1]==i&&y[j1]==j||(x[j1]==j&&y[j1]==i)){bo=1;break;}
if(bo==0){
x[count]=i;y[count]=j;result[count++]=i*j;
}
}
else{
i=(rand()%900+100)/(double)100;j=(rand()%900+100)/(double)100;k=(rand()%900+100)/(double)100;
wz=rand()%2+1;k1=rand()%4;k2=rand()%4;
for(int j1=0;j1<count;j1++){
if(kuohao[j1-N]==wz&&x[j1]==i&&A1[j1]==A[k1]&&y[j1]==j&&A2[j1-N]==A[k2]&&z[j1-N]==k){bo=1;break;}
}
if(bo==0){
if(wz==1){
if(k1==0&&k2==2){r=(i+j)*k;xs=1;}
else if(k1==0&&k2==3){r=(i+j)/k;xs=1;}
else if(k1==1&&k2==2&&i-j>=0){r=(i-j)*k;xs=1;}
else if(k1==1&&k2==3&&i>=j){r=(i-j)/k;xs=1;}
else if(k1==2&&k2==0){r=(i*j)+k;xs=1;}
else if(k1==2&&k2==1&&i*j-k>=0){r=(i*j)-k;xs=1;}
else if(k1==3&&k2==0){r=i/j+k;xs=1;}
else if(k1==3&&k2==1&&i/j-k>=0){r=i/j-k;xs=1;}
}
else{
if(k1==0&&k2==2){r=i+j*k;xs=1;}
else if(k1==0&&k2==4){r=i+j/k;xs=1;}
else if(k1==1&&k2==2&&i-j*k>=0){r=i-j*k;xs=1;}
else if(k1==1&&k2==3&&i-j/k>=0){r=i-j/k;xs=1;}
else if(k1==2&&k2==0){r=i*(j+k);xs=1;}
else if(k1==2&&k2==1&&j-k>=0){r=i*(j-k);xs=1;}
else if(k1==3&&k2==0){r=i/(j+k);xs=1;}
else if(k1==3&&k2==1&&j-k>0){r=i/(j-k);xs=1;}
}
if(xs==1){
x[count]=i;A1[count]=A[k1];y[count]=j;A2[count-N]=A[k2];z[count-N]=k;kuohao[count-N]=wz;result[count++]=r;
}
}
}
}
else{
if(nd==2&&count<N){i=(rand()%1000)/(double)100;j=(rand()%1000)/(double)100;}
else if(nd==2&&count>=N){i=(rand()%2000)/(double)100;j=(rand()%900+100)/(double)100;}
else if(nd==3&&count<N){i=(rand()%1000)/(double)100;j=(rand()%1000)/(double)100;}
else if(nd==3&&count>=N){i=(rand()%2000)/(double)100;j=(rand()%900+100)/(double)100;}
for(int j1=0;j1<count;j1++)if(x[j1]==i&&y[j1]==j||(x[j1]==j&&y[j1]==i)){bo=1;break;}
if(bo==0){
if(nd==2){
if(count<N)r=(int)(i/j);
else r=((int)(i/j*100))/(double)100;
xs=1;
}
else{
if(count<N)r=(int)(i/j);
else r=((int)(i/j*100))/(double)100;
xs==1;
}
if(xs==1){x[count]=i;y[count]=j;result[count++]=r;}
}
}
if(count==100)break;
}
}
void show(int grade,int nd){
int error[100],count=0;double js;
cout<<"计算开始:
";
if(grade==1){
for(int i=0;i<100;i++){
if(i<N){
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<"=";cin>>js;
if(js!=result[i])error[count++]=i;
}
else{
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<A2[i-N]<<z[i-N]<<"=";cin>>js;
if(js!=result[i])error[count++]=i;
}
}
}
else if(grade==2||grade==3){
if(nd==1||nd==2){
for(int i=0;i<100;i++){
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<"=";cin>>js;
if(js!=result[i])error[count++]=i;
}
}
else{
for(int i=0;i<100;i++){
if(i<N){
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<"=";cin>>js;
if(js!=result[i])error[count++]=i;
}
else if(i>=N&&i<100){
if(grade!=2){
if(kuohao[i-N]==1)cout<<i+1<<"、("<<x[i]<<A1[i]<<y[i]<<")"<<A2[i-N]<<z[i-N]<<"=";
else cout<<i+1<<"、"<<x[i]<<A1[i]<<"("<<y[i]<<A2[i-N]<<z[i-N]<<")=";
}
else cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<A2[i-N]<<z[i-N]<<"=";
cin>>js;
if(js!=result[i])error[count++]=i+1;
}
}
}
}
else if(grade==4){
if(nd==1){
for(int i=0;i<100;i++){
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<"=";cin>>js;
if(result[i]!=js)error[count++]=i;
}
}
else{
for(int i=0;i<100;i++){
if(i<N){
cout<<i+1<<"、"<<x[i]<<A1[i]<<y[i]<<"=";
}
else{
if(kuohao[i-N]==1)cout<<i+1<<"、("<<x[i]<<A1[i]<<y[i]<<")"<<A2[i-N]<<z[i-N]<<"=";
else cout<<i+1<<"、"<<x[i]<<A1[i]<<"("<<y[i]<<A2[i-N]<<z[i-N]<<")=";
}
cin>>js;
if(js!=result[i])error[count++]=i;
}
}
}
else{
if(nd==1){
for(int i=0;i<100;i++){
if(i<N){
cout<<i+1<<"、"<<x[i]<<"*"<<y[i]<<"=";
}
else{
if(kuohao[i-N]==1)cout<<i+1<<"、("<<x[i]<<A1[i]<<y[i]<<")"<<A2[i-N]<<z[i-N]<<"=";
else cout<<i+1<<"、"<<x[i]<<A1[i]<<"("<<y[i]<<A2[i-N]<<z[i-N]<<")=";
}
cin>>js;
if(js!=result[i])error[count++]=i;
}
}
else{
for(int i=0;i<100;i++){
cout<<i+1<<"、"<<x[i]<<"/"<<y[i]<<"=";cin>>js;
if(result[i]!=js)error[count++]=i;
}
}
}
cout<<"共"<<100-count<<"分,其中,第";
for(int i=0;i<count;i++)cout<<error[i]<<"、";cout<<"有误!";
}
void main(){
int grade=0,nd=0;
//start(grade,nd);
cout<<"选择年级:
"<<"1、一年级
"<<"2、二年级
"<<"3、三年级
"<<"4、四年级
"<<"5、五年级
";
cin>>grade;
cout<<"请选择难度:
"<<"1、难度一
"<<"2、难度二
"<<"3、难度三
";
cin>>nd;
if(grade==1){yi(nd);}
else if(grade==2){er(nd);}
else if(grade==3){san(nd);}
else if(grade==4){si(nd);}
else if(grade==5){wu(nd);}
show(grade,nd);
system("pause");
}
作业二
- 根据讲义给的链接进官网下载安装git时,下载速度贼慢,后下载了迅雷,解决了下载git的问题。
作业一的代码链接如下:
四则运算