c++求解,一道关于计算机随机产生10道四则运算题通过计算机-查字典问答网
分类选择

来自裴道武的问题

  c++求解,一道关于计算机随机产生10道四则运算题通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答

  c++求解,一道关于计算机随机产生10道四则运算题通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Notcorrect!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。

1回答
2020-05-10 20:11
我要回答
请先登录
房友园

  #include<iostream>#include<stdlib.h>#include<ctime>#include<conio.h>usingstd::cin;usingstd::cout;usingstd::endl;//计算式数量intconstNum=10;//计算式中最大数intconstMaxNum=10;enumenOp{Add,Subtract,Multiply,Divide};//加法intaddFun(intleft,intright){returnleft+right;}//减法intsubFun(intleft,intright){returnleft-right;}//乘法intmulFun(intleft,intright){returnleft*right;}//除法intdivFun(intleft,intright){returnleft/right;}//将枚举类型转换为字符类型,以便输出。charenum2char(enOpop){switch(op){caseAdd:return'+';caseSubtract:return'-';caseMultiply:return'x';caseDivide:return'/';}return'';}//计算生成表达式的正确结果。intmyResult(intleft,intright,enOpop){switch(op){caseAdd:returnaddFun(left,right);caseSubtract:returnsubFun(left,right);caseMultiply:returnmulFun(left,right);caseDivide:returndivFun(left,right);}return0;}//检查生成计算式的正确与否。其中减法结果不能为负数,除法结果不能为小数。boolcheckFormula(intleft,intright,enOpop){switch(op){caseAdd:returntrue;caseSubtract:{if(left<right)returnfalse;returntrue;}caseMultiply:returntrue;caseDivide:{if(double(left/right)!=double(double(left)/double(right)))returnfalse;returntrue;}}returnfalse;}//依据给定操作符,生成符合条件的表达式。voidgetFormula(int*left,int*right,enOpop){//srand(time(NULL));for(;;){*left=1+rand()%MaxNum;*right=1+rand()%MaxNum;if(checkFormula(*left,*right,op))break;}}intmain(){//操作符左值intleft[Num];//操作符右值intright[Num];//用户输入计算结果intresult[Num];//操作符+-*/enOpoper[Num];//正确答案个数intanswerRight=0;cout<<"正在生成,请稍等。"<<endl;//随机种子srand(time(NULL));//开始生成计算表达式。for(inti=0;i<Num;i++){//srand((unsigned)time(NULL));//操作符oper[i]=enOp(rand()%4);getFormula(&left[i],&right[i],oper[i]);}cout<<"生成计算式完成,开始答题!"<<endl;//输出表达式,让用户答题for(inti=0;i<Num;i++){//输出表达式cout<<"第"<<i+1<<"题:n";cout<<left[i]<<''<<enum2char(oper[i])<<''<<right[i]<<"=";//获取用户答案cin>>result[i];//比对用户答案是否正确,正确输出right,answerRigth加一,否则输出notcorrect。if(result[i]==myResult(left[i],right[i],oper[i])){cout<<"Right!n";answerRight++;}else{cout<<"Notcorrect!n";}}//全部答题完毕,输出正确答案个数及得分。cout<<"终止答题,共"<<Num<<"题,每题10分,答对"<<answerRight<<"题,得分:"<<answerRight*10<<"分。";//屏幕停止。getch();return0;}

2020-05-10 20:12:19

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •