题目:
请编写一个程序帮助小学生学习加、减、乘、除算术,要求如下:
(1)计算机随机产生10道简单四则运算题,正确率高于75%时通过,低于75%时让其再做10道,直到单次正确率高于75%
(2)设计评价系统和鼓励系统
(3)每次计算错误后打印出正确答案,最后打印出总分
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <math.h>
int count=0;
int makeN(int MIN_NUMBER,int MAX_NUMBER)
{
int number=0;
number=(rand()%(MAX_NUMBER-MIN_NUMBER+1))+MIN_NUMBER;
assert(number>=MIN_NUMBER<=MAX_NUMBER);
return number;
} //产生随机数函数
int upop()
{
int a=0;
srand(time(NULL));
a=makeN(1,4);
if(a==1)
{printf("very good!\n");}
else if(a==2)
{printf("Excellent!\n");}
else if(a==3)
{printf("Nice work!\n");}
else if(a==4)
{printf("keep up the good work!\n");}
} //正确鼓励函数
int encop()
{
int a=0;
srand(time(NULL));
a=makeN(1,4);
if(a==1)
{printf("No,please try again!\n");}
else if(a==2)
{printf("wrong.Try once more!\n");}
else if(a==3)
{printf("Don't give up!Do it again!\n");}
else if(a==4)
{printf("pity,not correct.Keep trying!\n");}
} //错误后鼓励函数
int add(int n)
{
int a=0,b=0,c=0,i=0;
srand(time(NULL));
for(i=1;i<=n;i++)
{
a=makeN(1,10);
b=makeN(1,10);
printf("%d+%d=",a,b);
scanf("%d",&c);
if(c==a+b)
{
upop();
count+=10;
}
else
{
encop();
printf("%d+%d=%d",a,b,a+b);
}
system("PAUSE");
system("CLS"); //每回冻屏并清屏
fflush(stdout); //清空缓冲区
}
} //随机加法函数
int mult(int n)
{
int a=0,b=0,c=0,i=0;
srand(time(NULL));
for(i=1;i<=n;i++)
{
a=makeN(1,10);
b=makeN(1,10);
printf("%d*%d=",a,b);
scanf("%d",&c);
if(c==a*b)
{
upop();
count+=10;
}
else
{
encop();
printf("%d*%d=%d",a,b,a*b);
}
system("PAUSE");
system("CLS");
fflush(stdout);
}
} //随机乘法函数
int subt(int n)
{
int a=0,b=0,c=0,i=0;
srand(time(NULL));
for(i=1;i<=n;i++)
{
a=makeN(1,10);
b=makeN(1,10);
printf("%d-%d=",a,b);
scanf("%d",&c);
if(c==a-b)
{
upop();
count+=10;
}
else
{
encop();
printf("%d-%d=%d",a,b,a-b);
}
system("PAUSE");
system("CLS");
fflush(stdout);
}
} //随机减法函数
int divi(int n)
{
int a=0,b=0, i=0;
double c=0;
srand(time(NULL));
for(i=1;i<=n;i++)
{
a=makeN(1,10);
b=makeN(1,10);
printf("%d/%d=(half adjust)",a,b);
scanf("%lf",&c);
if(fabs(c-float(a)/float(b))<=1e-2)
{
upop();
count+=10;
}
else
{
encop();
printf("%d/%d=%f",a,b,float(a)/float(b));
}
system("PAUSE");
system("CLS");
fflush(stdout);
}
} //随机除法函数
int mixa(int n)
{
int a=0,i=0;
srand(time(NULL));
for(i=1;i<=n;i++)
{
a=makeN(1,4);
if(a==1)
{add(1);}
else if(a==2)
{mult(1);}
else if(a==3)
{subt(1);}
else if(a==4)
{divi(1);}
}
} //随机四则运算函数
int judgestar()
{
if(count>0&&count<=20)
{printf("#");}
else if(count>20&&count<=40)
{printf("*");}
else if(count>40&&count<=60)
{printf("**");}
else if(count>60&&count<=80)
{printf("***");}
else if(count>80&&count<=90)
{printf("****");}
else if(count>90&&count<=99)
{printf("*****");}
else if(count==100)
{printf("******");}
} //星级评价函数
int main()
{
int i=0;
for(i=1;i<=10000000;i++)
{
mixa(10);
if((count/100)>=0.75) //正确率判断
{
printf("you have learn well!\n");
judgestar();
break;
}
else
{
printf("please try more!you are near the success!");
count=0;
}
system("PAUSE");
system("CLS");
}
}