小学生四则运算检测系统

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值