运算符 可以使用enum类型 然后随机输出...
- 满眼生机转化钧;天工人巧日争新。
#include<iostream> using namespace std; void display(char a[]); int Result(char a[]); char Sign[4]={'+','-','*','/'}; int main(void) { int i=4; int result; char a[4]; char b[7]; cout<<"请输入4小于10个正整数"<<endl; while(i--) cin>>a[i]; int n=7; while(n--) { for(int i=0;i<7;i+=2) //生成随机多项式 { b[i]=a[rand()%4]; if(i<5) b[i+1]=Sign[rand()%4]; } display( b); result=Result( b); cout<<"结果="<<result<<endl; } return 0; } void display(char a[]) //显示多项式 { cout<<a; } int Result(char a[]) { int b[7]; int result; int count=7; while(count--) { if((int)a[count]>=48) //只传递操作数 不传递 操作符 { b[count]=(int)a[count]-48; }else b[count]=6562; //9^4=6561 在运算中不可能出现 所以设置为标志位 } for(int i=1;i<6;i+=2) //求程序中的乘除法运算 { if(a[i]=='*'||a[i]=='/') { if(a[i]=='*') { if(b[i-1]!=6562) { b[i-1]=b[i-1]*b[i+1]; b[i+1]=6562; }else if(b[i-3]!=6562) { b[i-3]=b[i-3]*b[i+1]; b[i+1]=6562; }else { b[i-5]=b[i-5]*b[i+1]; b[i+1]=6562; } } if(a[i]=='/') { if(b[i-1]!=6562) { b[i-1]=b[i-1]/b[i+1]; b[i+1]=6562; }else if(b[i-3]!=6562) { b[i-3]=b[i-3]/b[i+1]; b[i+1]=6562; }else { b[i-5]=b[i-5]/b[i+1]; b[i+1]=6562; } } } } for(int i=1;i<6;i+=2) //求程序中的加减法运算 { if(a[i]=='+'||a[i]=='-') { if(a[i]=='+') { if(b[i-1]!=6562) { b[i-1]=b[i-1]+b[i+1]; b[i+1]=6562; }else if(b[i-3]!=6562) { b[i-3]=b[i-3]+b[i+1]; b[i+1]=6562; }else { b[i-5]=b[i-5]+b[i+1]; b[i+1]=6562; } } if(a[i]=='-') { if(b[i-1]!=6562) { b[i-1]=b[i-1]-b[i+1]; b[i+1]=6562; }else if(b[i-3]!=6562) { b[i-3]=b[i-3]-b[i+1]; b[i+1]=6562; }else { b[i-5]=b[i-5]-b[i+1]; b[i+1]=6562; } } } } int n=7; while(n--) { if(b[n]!=6562) { result=b[n]; break; } } return result; }