用C++写的:为了训练小学生的算术能力,请帮我设计一个100以内的随机出题程序,每次生成100道题。
# include & ltstdlib.h & gt
# include & ltctime & gt
# include & ltconio.h & gt
使用STD::CIN;
使用STD::cout;
使用STD::endl;
//配方数量
int常数Num = 100;
//计算公式中的最大数字
int const MaxNum = 100;
//每个问题的分数
int const PerMark = 1;
//计算结果的最大值
int const max result = 100;
//最小计算结果
int const min result = 0;
enum enOp {加、减、乘、除};
//将枚举类型转换为字符类型以便输出。
char enum2char(enOp操作)
{
开关
{
案例添加:
返回“+”;
大小写相减:
返回'-';
案例倍增:
返回“x”;
案例划分:
返回“/”;
}
返回“”;
}
//计算生成表达式的正确结果。
int myResult(int left,int right,enOp op)
{
开关
{
案例添加:
向左+向右返回;
大小写相减:
向左向右返回;
案例倍增:
返回左*右;
案例划分:
向左/向右返回;
}
返回0;
}
//检查生成的公式是否正确。其中减法结果不能为负,除法结果不能为小数。
布尔校验公式(int left,int right,enOp op)
{
开关
{
案例添加:
{
返回true
}
大小写相减:
{
if(left & lt;右)
返回false
返回true
}
案例倍增:
{
返回true
}
案例划分:
{
if(right == 0)
返回false
if(双(左/右)!= double(double(左)/double(右))
返回false
返回true
}
}
返回false
}
//根据给定的运算符,生成一个合格的表达式。
void getFormula(int* left,int*right,enOp op)
{
//srand(time(NULL));
for(;;)
{
* left = 1+rand()% MaxNum;
* right = 1+rand()% MaxNum;
if(checkFormula(*left,*right,op)& amp;& ampmyResult(*left,*right,op)& lt;= MaxResult & amp& ampmyResult(*left,*right,op)& gt;= MinResult)
打破;
}
}
int main()
{
//运算符左值
int left[Num];
//运算符右侧值
int right[Num];
//用户输入计算结果。
int result[Num];
//运算符+-*/
enOp操作数;
//正确答案的数量
int answer right = 0;
cout & lt& lt"正在生成,请稍候。"& lt& ltendl
//随机种子
srand(time(NULL));
//开始生成计算表达式。
for(int I = 0;我& ltNumi++)
{
//srand((无符号)time(NULL));
//运算符
oper[I]= enOp(rand()% 4);
get formula(& amp;左[i],& ampright[i],oper[I]);
}
cout & lt& lt“计算公式生成,开始答题!”& lt& ltendl
//输出表达式供用户回答。
for(int I = 0;我& ltNumi++)
{
//输出表达式
cout & lt& lt“第一”
cout & lt& ltleft[I]& lt;& lt' & lt& ltenum 2 char(oper[I])& lt;& lt' & lt& lt右[I]& lt;& lt" = ";
//获取用户答案
CIN & gt;& gt结果[一];
//比较用户的答案是否正确,正确输出右,正确答案加一,否则输出不正确。
if(结果[i] == myResult(left[i],right[i],oper[i]))
{
cout & lt& lt“对!\ n ";
answer right++;
}
其他
{
cout & lt& lt“不正确!\ n ";
}
}
//所有问题回答完毕后,输出正确答案的数量和分数。
cout & lt& lt“停止回答问题,* * * * & lt;& ltNum & lt& lt问题,每个问题
& lt& ltanswerRight * PerMark & lt& lt“分。”;
//屏幕停止。
getch();
返回0;
}