题目:
设计一个四则运算器程序,要求:
- 用随机数控制产生的四则运算表达式;
- 让用户定时计算结果并统计正确率;
#include <cstdio>
#include <iostream>
#include <ctime>
#include <cstdlib>
#define NUM 100
using namespace std;
enum charact{Add,Minus,Multip,Div};
char choose(charact op)
{
switch (op)
{
case Add:return '+';
case Minus:return '-';
case Multip:return '*';
case Div:return '/';
}
return ' ';
}
int correct(int num1,int num2,charact op)
{
switch(op)
{
case Add:return num1+num2;
case Minus:return num1-num2;
case Multip:return num1*num2;
case Div:return num1/num2;
}
return 0;
}
int check(int num1,int num2,charact op)
{
switch(op)
{
case Add:return true;
case Minus:if(num2<num1) return false;
else return true;
case Multip:return true;
case Div:if(num1<num2||num2== 0||num1%num2!=0)
return false;
else return true;
}
return false;
}
void calculate(int* num1,int* num2,charact op)
{
for(;;)
{
//srand(time(NULL));
*num1=rand()%100+1;
*num2=rand()%100+1;
if(check(*num1,*num2,op) == 1 && correct(*num1,*num2,op)<=100 && correct(*num1,*num2,op)>=0)
break;
}
}
int main()
{
time_t start,stop;
int i;
int num1[NUM];
int num2[NUM];
charact op[NUM];
int n = 0;
int result[NUM];
srand(time(NULL));
cout<<"Please wait a moment..."<<endl;
for(i=0;i<NUM;i++)
{
op[i]=charact(rand()%4);
calculate(&num1[i],&num2[i],op[i]);
}
cout<<"Please start..."<<endl;
start = time(NULL);
for(i=0;i<NUM;i++)
{
cout<<(i+1)<<". ";
cout<<num1[i]<<" "<<choose(op[i])<<" "<<num2[i]<<" "<<"= ";
cin>>result[i];
if(result[i] == correct(num1[i],num2[i],op[i]))
{
cout<<" Right !"<<endl;
n++;
}
while(result[i] != correct(num1[i],num2[i],op[i]))
{
cout<<" Wrong ! Please again !"<<endl;
cout<<" "<<num1[i]<<" "<<choose(op[i])<<" "<<num2[i]<<" "<<"= ";
cin>>result[i];
}
}
stop = time(NULL);
cout<<"***********************************************"<<endl;
cout<<"Stop !"<<endl;
cout<<"The number of the right subjects: "<<n<<endl;
cout<<"The percent of the right subjects : "<<float(n*100/NUM)<<"%"<<endl;
cout<<"The time you use is "<<(stop-start)<<"s"<<endl;
system("pause");
return 0;
}