请问这个代码哪里错误了呐?a题
#include <stdio.h>
#include <string.h>#include<iostream>
using namespace std;
struct note{
int c;
} p[300];
int top=0;
int a[30];char s[500];
int main()
{
int n,m,i,j,l,k;
char c;
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++){
scanf("%c ",&c);
if(c=='T')a[i]=1;
else a[i]=0;
}
scanf("%[^\n]",s);//输入字符串,可以有空格那种
l=strlen(s);
for(j=0;j<l;j++){
if(s[j]==' ')continue;//字符串发的空格跳过
if(s[j]>='A'&&s[j]<='Z'){// 入栈
k=s[j]-64;
p[top].c=a[k];
top++;
}
if(s[j]=='+'){//遇见加号就是交集
if(p[top-2].c&&p[top-1].c)
p[top-2].c=1;
else p[top-2].c=0;
top=top-2;// 出栈
}
if(s[j]=='*'){
if(p[top-2].c||p[top-1].c)
p[top-2].c=1;
else p[top-2].c=0;
top=top-2;
}
if(s[j]=='-'){
if(p[top-1].c)
p[top-1].c=0;
else p[top-1].c=1;
}
}
if(p[0].c)
printf("T\n");//cout<<"T"<<endl;
else printf("F\n");//cout<<"F"<<endl;
return 0;
}
全部评论
(1) 回帖