C++生成随机简单运算式_第1页
C++生成随机简单运算式_第2页
C++生成随机简单运算式_第3页
C++生成随机简单运算式_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#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 enO

2、pAdd,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)

3、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 fa

4、lse; 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() % Ma

5、xNum; *right = 1 + rand() % MaxNum; if(checkFormula(*left,*right,op) && myResult(*left,*right,op)<= MaxResult && myResult(*left,*right,op)>= MinResult) break; int main() /操作符左值 int leftNum; /操作符右值 int rightNum; /用户输入计算结果 int resultNum; /操作符 +-*/ enOp operNum; /正确答案个数 int answer

6、Right = 0; cout<<"正在生成,请稍等。"<<endl; /随机种子 srand(time(NULL); /开始生成计算表达式。 for(int i = 0;i<Num;i+) /srand( (unsigned)time(NULL); /操作符 operi = enOp(rand()%4); getFormula(&lefti,&righti,operi); cout<<"生成计算式完成,开始答题!"<<endl; /输出表达式,让用户答题 for(int i = 0;

7、i<Num;i+) /输出表达式 cout<<"第 "<<i+1<<" 题: n" cout<<lefti<<' '<<enum2char(operi)<<' '<<righti<< " = " /获取用户答案 cin>>resulti; /比对用户答案是否正确,正确输出 right,answerRigth加一,否则输出not correct。 if(resulti = myResult(lefti,righti,operi) cout<<"Right!n" answerRight+; else cout<<"Not correct!n" /全部答题完毕,输出正确答案个数及得分。 cout<<"终止答题,共 "<<Num<<" 题,每题 "<<PerMark<<" 分 ,答对 "

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论