#include<stdio.h>
#include<string.h>
int main()
{
int n,a[10],sum,i,j,k;//a数组用来保存输入的所有数字
char str[8],*yn[100];//yn存放YES或者NO;
scanf("%d",&n);
for(j=0;j<n;j++)//对于得到的每一个字符串进行如下操作
{
sum=0;
scanf("%s",str);//每得到一个字符串
for(i=0;i<7;i++)//数字
{
if(i%2==0)
a[i]=str[i]-'0';
else
a[i]=0;
}
for(i=1;i<7;i+=2)//优先计算乘除法,sum保存乘除法最后结果,k保存最终结果
{
if(str[i]=='x')//乘法的话就乘号附近的两个数计算出来并且让这三个数都为计算出来的结果,方便下次计算
{
sum+=a[i-1]*a[i+1];
a[i-1]=sum;
a[i]=sum;
a[i+1]=sum;
k=sum;
sum=0;
}
else if(str[i]=='/')
{
sum+=a[i-1]/a[i+1];
a[i-1]=sum;
a[i]=sum;
a[i+1]=sum;
k=sum;
sum=0;
}
}
for(i=1;i<7;i+=2)//计算加减法
{
if(str[i]=='+')
{
sum+=a[i-1]+a[i+1];
a[i-1]=sum;
a[i]=sum;
a[i+1]=sum;
k=sum;
sum=0;
}
else if(str[i]=='-')
{
sum+=a[i-1]-a[i+1];
a[i-1]=sum;
a[i]=sum;
a[i+1]=sum;
k=sum;
sum=0;
}
}
if(k==24)
yn[j]="Yes";
else
yn[j]="No";
}
for(i=0;i<n;i++)
printf("%s\n",yn[i]);
return 0;
}
你没有对括号进行处理啊
除法会有小数不能用int型计算和保存
参考
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。