试题编号: | 201903-2 |
---|---|
试题名称: | 二十四点 |
时间限制: | 1.0s |
内存限制: | 512.0MB |
代码:
#include <stdio.h>
int main() {
int n,i,j,k,l=7,sum=0,count=0,allsum=0;
char a[100];
scanf("%d",&n);
for(i=0; i<n; i++) {
scanf("%s",a);
l=7;
count=0; //用来判断乘除是否连续出现
//先算乘除
for(j=0; j<l; j+=2) {
a[j]-=48;
}
for(j=1; j<l; j+=2) {
if(a[j]=='x') {
count++;
if(count==1) {
sum=a[j-1]*a[j+1];
a[j-1]=sum;
} else {
sum*=a[j+1];
a[j-1]=sum;
}
//将字符数组往前推两个单位
for(k=j; k<l-2; k++) {
a[k]=a[k+2];
}
l-=2;
j-=2;
} else if(a[j]=='/') {
count++;
if(count==1) {
sum=a[j-1]/a[j+1];
a[j-1]=sum;
} else {
sum/=a[j+1];
a[j-1]=sum;
}
for(k=j; k<l; k++) {
a[k]=a[k+2];
}
l-=2;
j-=2;
} else if(a[j]=='+'||a[j]=='-') {
count=0;
}
}
//后算加减
allsum=a[0];
for(j=1; j<l; j+=2) {
if (a[j]=='+') {
allsum+=a[j+1];
} else
allsum-=a[j+1];
}
if(allsum==24) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
题目链接:http://118.190.20.162/view.page?gpid=T88