用c++编一个小学生100以内的加减乘除法运算,随机生成20个,减法不能出现负数,再批改
展开全部
#include <iostream.h>
#include <cstdlib>
#include <ctime>
class calculate
{
int iA ;
int iB ;
char nOperator ;
public:
void Rand_A () ; // 随机产生第一个操作数
void Rand_B () ; // 随机产生第二个操作数
void Rand_Operator () ; //随机产生一个操作符
void print () ;//将产生的表达式输出到屏幕,等待答题
int calcu () ; //根据iA,iB和运算符计算出结果
} ;
void calculate :: Rand_A ()
{
srand (time (NULL) + 1) ;
iA = rand () % 100 ;
}
void calculate :: Rand_B ()
{
srand (time (NULL)) ;
iB = rand () % 100 ;
}
void calculate :: Rand_Operator ()
{
char op [] = {'+', '-', '*', '/'} ;
srand (time (NULL)) ;
nOperator = op [rand () % 4] ;
}
void calculate :: print ()
{
switch (nOperator)//对于'-'和'/'和'*'三个运算符有要求,如果不符合要求,需要重新产生随机数据,然后才打印出来
{
case '-' :
while (iA < iB )
{
//如果iA < iB则结果会是负数,不符合要求,重新产生表达式
Rand_A () ;
Rand_B () ;
}
break ;
case '/' :
while (iB == 0 || iA % iB != 0 )
{
//如果iB == 0 || iA % iB != 0,则除法表达式中的除数为0 或者 iA不能被iB整除,此时重新产生新随机数
Rand_A () ;
Rand_B () ;
}
case '*' :
while (iA * iB > 100)
{
//如果iA*iB的结果大于100,则重新产生随机数
iA -- ;
iB -- ;
}
break ;
}
cout << iA << nOperator << iB << "=?" << endl ;
}
int calculate :: calcu ()
{
int result = 0 ;
switch (nOperator)
{
case '+' :
result = iA + iB ;
break ;
case '-' :
result = iA - iB ;
break ;
case '*' :
result = iA * iB ;
break ;
case '/' :
result = iA / iB ;
break ;
}
return result ;
}
int main()
{
int result ;
int count = 0 ;//count用于记录产生的表达式的个数
while(count < 20)
{
calculate calc ;
calc.Rand_A () ;
calc.Rand_B () ;
calc.Rand_Operator () ;
cout << "第" << (count + 1) << "个表达式:" ;
calc.print () ;
cin >> result ;
if (result != calc.calcu ())
cout << "真遗憾,你答错了,正确结果是" << calc.calcu () << endl ;
else
cout << "恭喜你答对了!" << endl ;
count ++ ;
}
return 0 ;
}刚学c++没多久,有用的话就看看吧。
#include <cstdlib>
#include <ctime>
class calculate
{
int iA ;
int iB ;
char nOperator ;
public:
void Rand_A () ; // 随机产生第一个操作数
void Rand_B () ; // 随机产生第二个操作数
void Rand_Operator () ; //随机产生一个操作符
void print () ;//将产生的表达式输出到屏幕,等待答题
int calcu () ; //根据iA,iB和运算符计算出结果
} ;
void calculate :: Rand_A ()
{
srand (time (NULL) + 1) ;
iA = rand () % 100 ;
}
void calculate :: Rand_B ()
{
srand (time (NULL)) ;
iB = rand () % 100 ;
}
void calculate :: Rand_Operator ()
{
char op [] = {'+', '-', '*', '/'} ;
srand (time (NULL)) ;
nOperator = op [rand () % 4] ;
}
void calculate :: print ()
{
switch (nOperator)//对于'-'和'/'和'*'三个运算符有要求,如果不符合要求,需要重新产生随机数据,然后才打印出来
{
case '-' :
while (iA < iB )
{
//如果iA < iB则结果会是负数,不符合要求,重新产生表达式
Rand_A () ;
Rand_B () ;
}
break ;
case '/' :
while (iB == 0 || iA % iB != 0 )
{
//如果iB == 0 || iA % iB != 0,则除法表达式中的除数为0 或者 iA不能被iB整除,此时重新产生新随机数
Rand_A () ;
Rand_B () ;
}
case '*' :
while (iA * iB > 100)
{
//如果iA*iB的结果大于100,则重新产生随机数
iA -- ;
iB -- ;
}
break ;
}
cout << iA << nOperator << iB << "=?" << endl ;
}
int calculate :: calcu ()
{
int result = 0 ;
switch (nOperator)
{
case '+' :
result = iA + iB ;
break ;
case '-' :
result = iA - iB ;
break ;
case '*' :
result = iA * iB ;
break ;
case '/' :
result = iA / iB ;
break ;
}
return result ;
}
int main()
{
int result ;
int count = 0 ;//count用于记录产生的表达式的个数
while(count < 20)
{
calculate calc ;
calc.Rand_A () ;
calc.Rand_B () ;
calc.Rand_Operator () ;
cout << "第" << (count + 1) << "个表达式:" ;
calc.print () ;
cin >> result ;
if (result != calc.calcu ())
cout << "真遗憾,你答错了,正确结果是" << calc.calcu () << endl ;
else
cout << "恭喜你答对了!" << endl ;
count ++ ;
}
return 0 ;
}刚学c++没多久,有用的话就看看吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询