标签:
小组成员:刘伟 ,李晨 (http://www.cnblogs.com/jiajun1/p/5295364.html )
#include<iostream> #include<string> #include<stdlib.h> #include<time.h> using namespace std; int randnum2(int min,int max) //获得随机数 { int ranum=0; ranum=rand(); while(ranum>max) { ranum%=max;//保证min<b<max if(ranum<min) { ranum=rand(); } } return ranum; } double answer(int ope,double num1,double num2) { double ans=0; if(ope==0) { ans=num1+num2; } if(ope==1) { ans=num1-num2; } if(ope==2) { ans=num1*num2; } if(ope==3) { ans=num1/num2; } return ans; } double question(int max,int min,int numam) { int a[100],i=2,j=0,num=0; double b[100]; string str="+-*/"; num=randnum2(i,numam); i=0; while(i<=num*3) // 初始化数组 { a[i]=randnum2(min,max); b[i]=a[i]; i++; } while(j<=num*3) { a[j]%=4;//运算符 a[j+1]%=2;//括号 if(a[j+1]==1) { a[j+4]=-1; } j+=3; } //测试 int t=0; //测试1111111111111111 i=0; j=1; while(j<=num*3) //输出式子 { if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3)cout<<"("; cout<<a[j+1]; if(a[j-3]==1&&j>3&&a[j-1]!=2&&a[j-1]!=3)cout<<")"; if(j<(num*3-3))cout<<str[a[j+2]]; j+=3; } j=1; while(j<=num*3-3) //计算括号 { if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3) { b[j+1]=answer(a[j+2],b[j+1],b[j+4]); a[j+1]=b[j+1]; for(int i=j+2;i<num*3-3;i++) { a[i]=a[i+3]; b[i]=b[i+3]; } num-=1; } j+=3; } j=1; while(j<=num*3-3) //计算乘除 { if(a[j+2]==2||a[j+2]==3) { b[j+1]= answer(a[j+2],b[j+1],b[j+4]); for(int i=j+2;i<num*3-3;i++) { a[i]=a[i+3]; b[i]=b[i+3]; } num-=1; j-=3; } j+=3; } j=1; double ans=0,m=0; while(j<=num*3) { m=b[j+1]; if(a[j+2]==1) { ans=ans-m; } else { ans=ans+m; } j+=3; } return ans; } int main() { int quam=5,max=9, min=3,numam=5; //输入生成题目的条件 cout<<"一共出几道题:"; cin>>quam; cout<<"最多几个数(10个数之间):"; cin>>numam; cout<<"数值范围:\n最大值:"; cin>>max; cout<<"最小值:"; cin>>min; //结束输入生成题目的条件 int i=1; double ansin; while(quam--) //循环一次生成一道题 { cout<<"No."<<i++<<":"; //题目计数器 double ans=question( max, min,numam); cout<<"="; cin>>ansin; cout<<"你输入的数为:"<<ansin<<endl; ansin=ansin-ans; if(ansin<0) { ansin=-ansin; } if(ansin<0.1) { cout<<"good!!"<<endl; } else { cout<<"回答错误!!!正确答案为:"<<ans<<endl; } } return 0; }
实验结果:
1.生成3道最多5个数取值范围在2~9之间的四则运算式
2.生成3道最多6个数取值范围在4~9之间的四则运算式
标签:
原文地址:http://www.cnblogs.com/Lw-1573/p/5295741.html