用C++编写:为训练小学生的算术能力,现请你帮忙设计一个100以内的随机出题程序,每次运行生成100道题。
为训练小学生的算术能力,现请你帮忙设计一个100以内的随机出题程序,每次运行生成100道题。要求:100以内整数加、减、乘、除运算;加减乘...
为训练小学生的算术能力,现请你帮忙设计一个100以内的随机出题程序,每次运行生成100道题。
要求:
100以内整数加、减、乘、除运算;
加减乘除符号(运算符)随机产生;
操作数随机产生;
产生的题目输出到屏幕上(能够写入文件更好)。 展开
要求:
100以内整数加、减、乘、除运算;
加减乘除符号(运算符)随机产生;
操作数随机产生;
产生的题目输出到屏幕上(能够写入文件更好)。 展开
5个回答
展开全部
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <conio.h>
using std::cin;
using std::cout;
using std::endl;
//计算式 数量
int const Num = 100;
//计算式中 最大数
int const MaxNum = 100;
//每题分数
int const PerMark = 1;
//计算结果最大值
int const MaxResult = 100;
//计算结果最小值
int const MinResult = 0;
enum enOp{Add,Subtract,Multiply,Divide};
//将 枚举类型转换为字符类型,以便输出。
char enum2char(enOp op)
{
switch (op)
{
case Add:
return '+';
case Subtract:
return '-';
case Multiply:
return 'x';
case Divide:
return '/';
}
return ' ';
}
//计算生成表达式的正确结果。
int myResult(int left,int right,enOp op)
{
switch (op)
{
case Add:
return left+right;
case Subtract:
return left-right;
case Multiply:
return left *right;
case Divide:
return left/ right;
}
return 0;
}
//检查生成计算式的正确与否。其中 减法结果不能为负数,除法结果不能为小数。
bool checkFormula(int left,int right,enOp op)
{
switch (op)
{
case Add:
{
return true;
}
case Subtract:
{
if(left < right)
return false;
return true;
}
case Multiply:
{
return true;
}
case Divide:
{
if(right == 0)
return false;
if(double(left/right) != double(double(left)/double(right)))
return false;
return true;
}
}
return 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) && myResult(*left,*right,op)<= MaxResult && myResult(*left,*right,op)>= MinResult)
break;
}
}
int main()
{
//操作符左值
int left[Num];
//操作符右值
int right[Num];
//用户输入计算结果
int result[Num];
//操作符 +-*/
enOp oper[Num];
//正确答案个数
int answerRight = 0;
cout<<"正在生成,请稍等。"<<endl;
//随机种子
srand(time(NULL));
//开始生成计算表达式。
for(int i = 0;i<Num;i++)
{
//srand( (unsigned)time(NULL));
//操作符
oper[i] = enOp(rand()%4);
getFormula(&left[i],&right[i],oper[i]);
}
cout<<"生成计算式完成,开始答题!"<<endl;
//输出表达式,让用户答题
for(int i = 0;i<Num;i++)
{
//输出表达式
cout<<"第 "<<i+1<<" 题: \n";
cout<<left[i]<<' '<<enum2char(oper[i])<<' '<<right[i]<< " = ";
//获取用户答案
cin>>result[i];
//比对用户答案是否正确,正确输出 right,answerRigth加一,否则输出not correct。
if(result[i] == myResult(left[i],right[i],oper[i]))
{
cout<<"Right!\n";
answerRight++;
}
else
{
cout<<"Not correct!\n";
}
}
//全部答题完毕,输出正确答案个数及得分。
cout<<"终止答题,共 "<<Num<<" 题,每题 "<<PerMark<<" 分 ,答对 "<<answerRight<<" 题,得分 :"
<<answerRight*PerMark<<" 分。";
//屏幕停止。
getch();
return 0;
}
#include <stdlib.h>
#include <ctime>
#include <conio.h>
using std::cin;
using std::cout;
using std::endl;
//计算式 数量
int const Num = 100;
//计算式中 最大数
int const MaxNum = 100;
//每题分数
int const PerMark = 1;
//计算结果最大值
int const MaxResult = 100;
//计算结果最小值
int const MinResult = 0;
enum enOp{Add,Subtract,Multiply,Divide};
//将 枚举类型转换为字符类型,以便输出。
char enum2char(enOp op)
{
switch (op)
{
case Add:
return '+';
case Subtract:
return '-';
case Multiply:
return 'x';
case Divide:
return '/';
}
return ' ';
}
//计算生成表达式的正确结果。
int myResult(int left,int right,enOp op)
{
switch (op)
{
case Add:
return left+right;
case Subtract:
return left-right;
case Multiply:
return left *right;
case Divide:
return left/ right;
}
return 0;
}
//检查生成计算式的正确与否。其中 减法结果不能为负数,除法结果不能为小数。
bool checkFormula(int left,int right,enOp op)
{
switch (op)
{
case Add:
{
return true;
}
case Subtract:
{
if(left < right)
return false;
return true;
}
case Multiply:
{
return true;
}
case Divide:
{
if(right == 0)
return false;
if(double(left/right) != double(double(left)/double(right)))
return false;
return true;
}
}
return 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) && myResult(*left,*right,op)<= MaxResult && myResult(*left,*right,op)>= MinResult)
break;
}
}
int main()
{
//操作符左值
int left[Num];
//操作符右值
int right[Num];
//用户输入计算结果
int result[Num];
//操作符 +-*/
enOp oper[Num];
//正确答案个数
int answerRight = 0;
cout<<"正在生成,请稍等。"<<endl;
//随机种子
srand(time(NULL));
//开始生成计算表达式。
for(int i = 0;i<Num;i++)
{
//srand( (unsigned)time(NULL));
//操作符
oper[i] = enOp(rand()%4);
getFormula(&left[i],&right[i],oper[i]);
}
cout<<"生成计算式完成,开始答题!"<<endl;
//输出表达式,让用户答题
for(int i = 0;i<Num;i++)
{
//输出表达式
cout<<"第 "<<i+1<<" 题: \n";
cout<<left[i]<<' '<<enum2char(oper[i])<<' '<<right[i]<< " = ";
//获取用户答案
cin>>result[i];
//比对用户答案是否正确,正确输出 right,answerRigth加一,否则输出not correct。
if(result[i] == myResult(left[i],right[i],oper[i]))
{
cout<<"Right!\n";
answerRight++;
}
else
{
cout<<"Not correct!\n";
}
}
//全部答题完毕,输出正确答案个数及得分。
cout<<"终止答题,共 "<<Num<<" 题,每题 "<<PerMark<<" 分 ,答对 "<<answerRight<<" 题,得分 :"
<<answerRight*PerMark<<" 分。";
//屏幕停止。
getch();
return 0;
}
展开全部
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void main()
{
for(int i=0;i<100;i++)
{
srand(time(NULL)+i); //初始化随机种子
int a,b,c;
a=rand()%100+1;
b=rand()%100+1;
c=rand()%4;
switch(c)
{
case 0:cout<<a<<"+"<<b<<"="<<endl;break;
case 1:cout<<a<<"—"<<b<<"="<<endl;break;
case 2:cout<<a<<"×"<<b<<"="<<endl;break;
case 3:cout<<a<<"÷"<<b<<"="<<endl;break;
default:cout<<"Unknown Error!"<<endl;break;
}
}
//程序缺陷:没有判断整除和被减数大于减数问题
//没有写入文件和给出问题答案
//时间有限,仅供参考
}
#include<cstdlib>
#include<ctime>
using namespace std;
void main()
{
for(int i=0;i<100;i++)
{
srand(time(NULL)+i); //初始化随机种子
int a,b,c;
a=rand()%100+1;
b=rand()%100+1;
c=rand()%4;
switch(c)
{
case 0:cout<<a<<"+"<<b<<"="<<endl;break;
case 1:cout<<a<<"—"<<b<<"="<<endl;break;
case 2:cout<<a<<"×"<<b<<"="<<endl;break;
case 3:cout<<a<<"÷"<<b<<"="<<endl;break;
default:cout<<"Unknown Error!"<<endl;break;
}
}
//程序缺陷:没有判断整除和被减数大于减数问题
//没有写入文件和给出问题答案
//时间有限,仅供参考
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<cstdio>
#include<ctime>
#include<cstdlib>
int a, b, c;
int main()
{
freopen("a.txt", "w", stdout);
srand(time(0));
a = rand() % 100 + 1;
b = rand() % 100 + 1;
c = rand() % 4 + 1;
printf("%d", a);
switch (c)
{
case 1 : printf(" + "); break;
case 2 : printf(" - "); break;
case 3 : printf(" * "); break;
case 4 : printf(" ÷ "); break;
}
printf("%d = ?", b);
return 0;
}
比较简单吧,如果还有其他条件限制的话,可以自行修改,也可以找我修改~
#include<ctime>
#include<cstdlib>
int a, b, c;
int main()
{
freopen("a.txt", "w", stdout);
srand(time(0));
a = rand() % 100 + 1;
b = rand() % 100 + 1;
c = rand() % 4 + 1;
printf("%d", a);
switch (c)
{
case 1 : printf(" + "); break;
case 2 : printf(" - "); break;
case 3 : printf(" * "); break;
case 4 : printf(" ÷ "); break;
}
printf("%d = ?", b);
return 0;
}
比较简单吧,如果还有其他条件限制的话,可以自行修改,也可以找我修改~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用javaScript与HTML编写一个小游戏程序,为小学生算术运算题在娱乐中完成。2.可设定在指定4.随机产生一道给500块钱我替你做. 没分怎么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
产生随机数啊,很简单的,可是我不会C++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询