如图所示先处理乘号和除号,再处理加减。
#include<bits/stdc++.h>
using namespace std;
bool res[101];
int main(){
int n;
cin>>n;
int i,j,op1,op2;
string inp;
char op[3];
int nn[4];
int sum,nnum=0;
int opnum=0;
int nns[4];
char ops[3];
for(i=0;i<n;i++){
cin>>inp;
sum=0;
nnum=0;
opnum=0;
nn[0]=inp[0]-'0';
nn[1]=inp[2]-'0';
nn[2]=inp[4]-'0';
nn[3]=inp[6]-'0';
op[0]=inp[1];
op[1]=inp[3];
op[2]=inp[5];
j=0;
while(j<4){
nns[nnum++]=nn[j];
if(opnum>0&&(ops[opnum-1]=='x'||ops[opnum-1]=='/')){
op1=nns[nnum-2];
op2=nns[nnum-1];
nnum-=2;
if(ops[opnum-1]=='x'){
nns[nnum++]=op1*op2;
}else{
nns[nnum++]=op1/op2;
}
opnum--;
}
if(j!=3){
ops[opnum++]=op[j];
}
j++;
}
/* for(j=0;j<opnum;j++){
cout<<nns[j]<<ops[j];
}
cout<<nns[opnum]<<endl;
*/ sum=nns[0];
for(j=0;j<opnum;j++){
if(ops[j]=='+'){
sum+=nns[j+1];
}else{
sum-=nns[j+1];
}
}
// cout<<sum<<endl;
res[i]=(sum==24);
}
for(i=0;i<n;i++){
if(res[i]){
cout<<"Yes\n";
}else{
cout<<"No\n";
}
}
}