本题注意: 1、等号右边为数字也是允许的,且属于确定变量 2、未知变量赋值给已知变量会使已知变量被消掉 当初因为没考虑第2点Wa了。 猜测:可能数据中数字都为1位数吧,侥幸。 #include<iostream> using namespace std; int n=0; bool b[50]; int main(){ int i; char a,g,c; bool o,p,q=1; cin>>n; while(n!=-1){ memset(b,0,sizeof(b)); b[1]=1; o=1;p=0; for(i=0;i<n;i++){ cin>>a>>g>>c; if(b[int(c)-96]==1 || ('0'<=c && c<='9')) b[int(a)-96]=1; else b[int(a)-96]=0; } for(i=1;i<27;i++) if(b[i]==1){ if(o==0) printf(" "); o=0; printf("%c",char(i+96)); } if(o==1) printf("none"); printf("/n"); cin>>n; } // system("pause"); return 0; } http://acm.fzu.edu.cn/problem.php?pid=1055