⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 小学生算法.cpp

📁 这是一个帮助小学生提高的运算程序,大家可以看看,有没有什么更好的想法.
💻 CPP
字号:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include<math.h>

int random(int hard);
void right(int i);
void wrong(int i);
void plus(int hard,int n);
void minus(int hard,int n);
void multiply(int hard,int n);
void divide(int hard,int n);
void mix(int hard,int n);


int random(int hard)
{
	if (hard==1)
		return rand()%10;
	else if (hard==2)
		return rand()%100;
	else return NULL;
}

void right(int i)
{
	switch (i)
	{
		case 0:cout<<"√  很好!"<<endl;break;
		case 1:cout<<"√  好聪明!"<<endl;break;
		case 2:cout<<"√  很出色!"<<endl;break;
		case 3:cout<<"√  真厉害!"<<endl;
	}
}


void wrong(int i)
{
	switch (i)
	{
		case 0:cout<<"×  错了!"<<endl;break;
		case 1:cout<<"×  不对哦!"<<endl;break;
		case 2:cout<<"×  还差点!"<<endl;break;
		case 3:cout<<"×  做错啦!"<<endl;
	}
}


void plus(int hard,int n)
{
	int t,x,y,z,i,j;
	double answer;
	t=0;
	j=1;
	for (i=1;i<=n;i++)
	{
		do
		{
			x=random(hard);
			y=random(hard);
		} while (x+y>=pow(10,hard));
		z=x+y;
		cout<<"第"<<i<<"题:"<<x<<"+"<<y<<"=";
		cin>>answer;
		if (answer!=int(answer))
		{
			wrong(j);
			j=(j+1)%4;
		}
		else if (answer==-1.0)
		{
			if (i==1)
			{
				cout<<"本次练习中,你没有做任何题目。"<<endl;
				return;
			}
			else
			{
				cout<<"本次练习中,你做了"<<i-1<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/(i-1))/100.0<<"%。"<<endl;
				return;
			}
		}
		else if (answer==z)
		{
			right(j);
			t=t+1;
			j=(j+1)%4;
		}
		else
		{
			wrong(j);
			j=(j+1)%4;
		}
	}
	cout<<"本次练习中,你做了"<<n<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/n)/100.0<<"%。"<<endl;
}


void minus(int hard,int n)
{
	int t,x,y,z,i,j;
	double answer;
	t=0;
	j=1;
	for (i=1;i<=n;i++)
	{
		do
		{
			x=random(hard);
			y=random(hard);
		} while (x<y);
		z=x-y;
		cout<<"第"<<i<<"题:"<<x<<"-"<<y<<"=";
		cin>>answer;
		if (answer!=int(answer))
		{
			wrong(j);
			j=(j+1)%4;
		}
		else if (answer==-1.0)
		{
			if (i==1)
			{
				cout<<"本次练习中,你没有做任何题目。"<<endl;
				return;
			}
			else
			{
				cout<<"本次练习中,你做了"<<i-1<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/(i-1))/100.0<<"%。"<<endl;
				return;
			}
		}
		else if (answer==z)
		{
			right(j);
			t=t+1;
			j=(j+1)%4;
		}
		else
		{
			wrong(j);
			j=(j+1)%4;
		}
	}
	cout<<"本次练习中,你做了"<<n<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/n)/100.0<<"%。"<<endl;
}


void multiply(int hard,int n)
{
	int t,x,y,z,i,j;
	double answer;
	t=0;
	j=1;
	for (i=1;i<=n;i++)
	{
		x=random(hard);
		y=random(hard);
		z=x*y;
		cout<<"第"<<i<<"题:"<<x<<"×"<<y<<"=";
		cin>>answer;
		if (answer!=int(answer))
		{
			wrong(j);
			j=(j+1)%4;
		}
		else if (answer==-1.0)
		{
			if (i==1)
			{
				cout<<"本次练习中,你没有做任何题目。"<<endl;
				return;
			}
			else
			{
				cout<<"本次练习中,你做了"<<i-1<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/(i-1))/100.0<<"%。"<<endl;
				return;
			}
		}
		else if (answer==z)
		{
			right(j);
			t=t+1;
			j=(j+1)%4;
		}
		else
		{
			wrong(j);
			j=(j+1)%4;
		}
	}
	cout<<"本次练习中,你做了"<<n<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/n)/100.0<<"%。"<<endl;
}


void divide(int hard,int n)
{
	int t,x,y,z,i,j;
	double answer;
	t=0;
	j=1;
	for (i=1;i<=n;i++)
	{
		do
		{
			x=random(hard);
			do
			{
				y=random(hard);
			} while (y==0);
		} while (x%y!=0);
		z=int(x/y);
		cout<<"第"<<i<<"题:"<<x<<"÷"<<y<<"=";
		cin>>answer;
		if (answer!=int(answer))
		{
			wrong(j);
			j=(j+1)%4;
		}
		else if (answer==-1.0)
		{
			if (i==1)
			{
				cout<<"本次练习中,你没有做任何题目。"<<endl;
				return;
			}
			else
			{
				cout<<"本次练习中,你做了"<<i-1<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/(i-1))/100.0<<"%。"<<endl;
				return;
			}
		}
		else if (answer==z)
		{
			right(j);
			t=t+1;
			j=(j+1)%4;
		}
		else
		{
			wrong(j);
			j=(j+1)%4;
		}
	}
	cout<<"本次练习中,你做了"<<n<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/n)/100.0<<"%。"<<endl;
}


void mix(int hard,int n)
{
	int op[4],i,j,k,t,s1,s2;
	double x[5],a,b,c,answer,tanswer;
	t=0;
	j=1;
	for (i=1;i<=n;i++)
	{
		do
		{
			for (k=0;k<5;k++)
				x[k]=random(hard);
			for (k=0;k<4;k++)
				op[k]=random(2)%4;
			a=x[0];
			s1=op[0];
			b=x[1];
			for (k=2;k<=4;k++)
			{
				s2=op[k-1];
				c=x[k];
				if ((s1/2)>=(s2/2))
				{
					switch (s1)
					{
						case 0:a=a+b;break;
						case 1:a=a-b;break;
						case 2:a=a*b;break;
						case 3:while (b==0) tanswer=-1;if (tanswer==-1) continue; a=a/b;
					}
					s1=s2;
					b=c;
				}
				else
				{
					switch (s2)
					{
						case 0:b=b+c;break;
						case 1:b=b-c;break;
						case 2:b=b*c;break;
						case 3:while (c==0) tanswer=-1;if (tanswer==-1) continue; b=b/c;
					}
				}
			}
			switch (s1)
			{
				case 0:tanswer=a+b;break;
				case 1:tanswer=a-b;break;
				case 2:tanswer=a*b;break;
				case 3:while (b==0) tanswer=-1;if (tanswer==-1) continue; tanswer=a/b;
			}
		} while ((tanswer<0.0)||(tanswer!=int(tanswer)));
		cout<<"第"<<i<<"题:"<<int(x[0]);
		for (k=1;k<=4;k++)
		{
			switch (op[k-1])
			{
				case 0:cout<<"+";break;
				case 1:cout<<"-";break;
				case 2:cout<<"×";break;
				case 3:cout<<"÷";
			}
			cout<<int(x[k]);
		}
		cout<<"=";
		cin>>answer;
		if (answer!=int(answer))
		{
			wrong(j);
			j=(j+1)%4;
		}
		else if (answer==-1.0)
		{
			if (i==1)
			{
				cout<<"本次练习中,你没有做任何题目。"<<endl;
				return;
			}
			else
			{
				cout<<"本次练习中,你做了"<<i-1<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/(i-1))/100.0<<"%。"<<endl;
				return;
			}
		}
		else if (answer==tanswer)
		{
			right(j);
			t=t+1;
			j=(j+1)%4;
		}
		else
		{
			wrong(j);
			j=(j+1)%4;
		}
	}
	cout<<"本次练习中,你做了"<<n<<"题,作对了"<<t<<"题,正确率"<<int(t*10000/n)/100.0<<"%。"<<endl;
}


void main()
{
	double i,j,n;
	char yn;
	srand(time(0));
	do
	{
		cout<<"小学生算术辅助教学程序"<<endl;
		do
		{
			cout<<"请选择难度级别(1-初级;2-高级):";
			cin>>i;
		} while ((i!=1.0)&&(i!=2.0));
		do
		{
			cout<<"请选择要学习的算术类型(1-加法;2-减法;3-乘法;4-除法;5-混合运算):";
			cin>>j;
		} while ((j!=1.0)&&(j!=2.0)&&(j!=3.0)&&(j!=4.0)&&(j!=5.0));
		do
		{
		    cout<<"请输入要练习的题目数量(运算过程中可以回答'-1'来结束本次练习): ";
			cin>>n;
		} while ((n!=int(n))||(n<0.0));
		switch (int(j))
		{
			case 1:plus(int(i),int(n));break;
			case 2:minus(int(i),int(n));break;
			case 3:multiply(int(i),int(n));break;
			case 4:divide(int(i),int(n));break;
			case 5:mix(int(i),int(n));
		}
		do
		{
			cout<<"还想再练习吗?(Y/N)";
			cin>>yn;
		} while ((yn!='Y')&&(yn!='y')&&(yn!='N')&&(yn!='n'));
		cout<<endl<<endl;
	} while ((yn=='Y')||(yn=='y'));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -