发现纯为乘除时,计算错误,此时提交为50分
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int num[4],i,j;
char op[3];
double gg=0;
char s[8];
cin>>s;
for(i = 0; i < 4; i++)
num[i] = s[i * 2] - '0';
for(i = 0; i < 3; i++)
op[i] = s[i * 2 + 1];
for(i = 0; i<3;i++)
{
if(op[i]=='x')
{
num[i+1]*=num[i];
num[i]=0;
if(op[i-1]=='x'|| op[i-1]=='/')
num[i]=1;
else if(i>0)
op[i]=op[i-1];
else if(i==0)
op[i]='+';
}
else if(op[i]=='/')
{
num[i+1]=num[i]/num[i+1];
num[i]=0;
if(op[i-1]=='x'|| op[i-1]=='/')
num[i]=1;
else if(i>0)
op[i]=op[i-1];
else if(i==0)
op[i]='+';
}
}
/* 上段 乘除计算过去错误的50分错误写法,乘除先后乱了 ,应该移位前后加减运算符
for(i = 0; i<3;i++)
{
if(op[i]=='x')
{
num[i]*=num[i+1];
num[i+1]=0;
op[i]='+';
}
else if(op[i]=='/')
{
num[i]/=num[i+1];
num[i+1]=0;
op[i]='+';
}
}
*/
for(i = 0; i<3;i++)
{
if(op[i]=='+')
{
gg= num[i]+num[i+1];
num[i+1]=gg;
} else if(op[i]=='-')
{
gg=num[i]-num[i+1];
num[i+1]=gg;
}
}
if(gg==24)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
/*
3+9+9+3
4x5+2+2
1+4x5+3
6+9/1+9
9+3+4x3
5+4x5x5
7-9-9+8
5x6/5x4
3+5+7+9
1x1+9-9
1x9-5/9
8/5+6x9
6x7-3x6
6x4+4/5
*/
抱歉了老师,我是小菜鸡,只会用数组