#include<time.h>
#include<iostream>
using namespace std;
void menu()//菜单
{
cout<<"小学生四则运算检测系统"<<endl;
cout<<"1.加法运算检测"<<endl;
cout<<"2.减法法运算检测"<<endl;
cout<<"3.乘法运算检测"<<endl;
cout<<"4.除法运算检测"<<endl;
cout<<"0.退出"<<endl;
cout<<"请选择:";
}
int main()
{
int x, y, i, answer, k,l,erx[6],ery[6],era[6],t;//x为第一个操作数 ,y为第二个操作数,answer用来记录使用者的答案
do{
menu();
t=0;
cin>>l;
if(l==0)//退出循环
{
break;
}
if(l==1)
{
int a[6] = { 0 }, count[3] = { 0 },cnt;//a 数组 用来记下每题的正确答案
srand((unsigned)(time(NULL)));//随机种子,不加这个会导致随机数每次的一样
for (i = 1; i <= 5; i++)
{
cout<<"请回答第"<<i<<"道题目:\n";
k = 0;//记录次数
x = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
y = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
a[i] = x + y;//计算正确答案
cout<<x<<"+"<<y<<"=?\n";
do
{
cin>>answer;//输入自己的答案
if (answer == a[i])//判断自己的答案和标答是否相同
{
cout<<"回答正确!"<<endl;
break;
}
else
{
k++;//次数加 1
if (k == 2)
{
cout<<"第二次回答错误!\n";
}
if (k == 3)
{
cout<<"第三次回答错误!\n";
erx[t]=x;ery[t]=y;era[t]=a[i];//记录错题
t++;
cout<<"正确答案为"<<a[i]<<endl;
break;
}
cout<<"回答错误!请再答一次\n";
}
} while (1);
count[k]++;//记录答对的次数
}
cnt=count[0]+count[1]+count[2];//回答正确的总次数
cout<<"您总共答对"<<cnt<<"道题,总共得分"<<count[0]*20+count[1]*15+count[2]*10<<endl;
if(cnt!=5)
{
cout<<"错题有如下:\n"<<endl;
for(i=0;i<5-cnt;i++)
{
cout<<erx[i]<<"+"<<ery[i]<<"="<<era[i]<<endl;
}
}
system("pause");
}
if(l==2)//减法
{
int a[6] = { 0 }, count[3] = { 0 },cnt;//a 数组 用来记下每题的正确答案
srand((unsigned)(time(NULL)));//随机种子,不加这个会导致随机数每次的一样
for (i = 1; i <= 5; i++)
{
cout<<"请回答第"<<i<<"道题目:\n";
k = 0;//记录次数
x = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
y = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
a[i] = x - y;//计算正确答案
cout<<x<<"-"<<y<<"=?\n";
do
{
cin>>answer;//输入自己的答案
if (answer == a[i])//判断自己的答案和标答是否相同
{
cout<<"回答正确!"<<endl;
break;
}
else
{
k++;//次数加 1
if (k == 2)
{
cout<<"第二次回答错误!\n";
}
if (k == 3)
{
cout<<"第三次回答错误!\n";
erx[t]=x;ery[t]=y;era[t]=a[i];//记录错题
t++;
cout<<"正确答案为"<<a[i]<<endl;
break;
}
cout<<"回答错误!请再答一次\n";
}
} while (1);
count[k]++;//记录答对的次数
}
cnt=count[0]+count[1]+count[2];//回答正确的总次数
cout<<"您总共答对"<<cnt<<"道题,总共得分"<<count[0]*20+count[1]*15+count[2]*10<<endl;
if(cnt!=5)//如果没有全对
{
cout<<"错题有如下:\n"<<endl;
for(i=0;i<5-cnt;i++)
{
cout<<erx[i]<<"-"<<ery[i]<<"="<<era[i]<<endl;
}
}
system("pause");
}
if(l==3)//乘法
{
int a[6] = { 0 }, count[3] = { 0 },cnt;//a 数组 用来记下每题的正确答案
srand((unsigned)(time(NULL)));//随机种子,不加这个会导致随机数每次的一样
for (i = 1; i <= 5; i++)
{
cout<<"请回答第"<<i<<"道题目:\n";
k = 0;//记录次数
x = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
y = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
a[i] = x * y;//计算正确答案
cout<<x<<"*"<<y<<"=?\n";
do
{
cin>>answer;//输入自己的答案
if (answer == a[i])//判断自己的答案和标答是否相同
{
cout<<"回答正确!"<<endl;
break;
}
else
{
k++;//次数加 1
if (k == 2)
{
cout<<"第二次回答错误!\n";
}
if (k == 3)
{
cout<<"第三次回答错误!\n";
erx[t]=x;ery[t]=y;era[t]=a[i];//记录错题
t++;
cout<<"正确答案为"<<a[i]<<endl;
break;
}
cout<<"回答错误!请再答一次\n";
}
} while (1);
count[k]++;//记录答对的次数
}
cnt=count[0]+count[1]+count[2];//回答正确的总次数
cout<<"您总共答对"<<cnt<<"道题,总共得分"<<count[0]*20+count[1]*15+count[2]*10<<endl;
if(cnt!=5)//如果没有全对
{
cout<<"错题有如下:\n"<<endl;
for(i=0;i<5-cnt;i++)
{
cout<<erx[i]<<"*"<<ery[i]<<"="<<era[i]<<endl;
}
}
system("pause");
}
if(l==4)//除法
{
int a[6] = { 0 }, count[3] = { 0 },cnt;//a 数组 用来记下每题的正确答案
srand((unsigned)(time(NULL)));//随机种子,不加这个会导致随机数每次的一样
for (i = 1; i <= 5; i++)
{
cout<<"请回答第"<<i<<"道题目:\n";
k = 0;//记录次数
x = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
y = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
while(x%y!=0)//如果x/y不能整除,就重新生成随机数,直到可以整除
{
x = 1 + (double)(rand()) / RAND_MAX * (20 - 1);//产生1~20的随机数
y = 1 + (double)(rand()) / RAND_MAX * (50 - 1);//产生1~50的随机数
}
a[i] = x / y;//计算正确答案
cout<<x<<"/"<<y<<"=?\n";
do
{
cin>>answer;//输入自己的答案
if (answer == a[i])//判断自己的答案和标答是否相同
{
cout<<"回答正确!"<<endl;
break;
}
else
{
k++;//次数加 1
if (k == 2)
{
cout<<"第二次回答错误!\n";
}
if (k == 3)
{
cout<<"第三次回答错误!\n";
erx[t]=x;ery[t]=y;era[t]=a[i];//记录错题
t++;
cout<<"正确答案为"<<a[i]<<endl;
break;
}
cout<<"回答错误!请再答一次\n";
}
} while (1);
count[k]++;//记录答对的次数
}
cnt=count[0]+count[1]+count[2];//回答正确的总次数
cout<<"您总共答对"<<cnt<<"道题,总共得分"<<count[0]*20+count[1]*15+count[2]*10<<endl;
if(cnt!=5)//如果没有全对
{
cout<<"错题有如下:\n"<<endl;
for(i=0;i<5-cnt;i++)
{
cout<<erx[i]<<"/"<<ery[i]<<"="<<era[i]<<endl;
}
}
system("pause");
}
}while(1);
return 0;
}