先说一下报错案例吧,过了五个用例,就。。觉得好像逻辑确实没啥问题,一直改也不对,先放一放吧
#include<stdio.h> #include<string.h> char psd[27],vis[27],str[1005]; int main(){ while(scanf("%s %s",psd,str)!=EOF){ memset(vis,0,sizeof(vis)); int tmp,idx=0; //密码对应 for(int i=0;psd[i]!=0;i++){ if(psd[i]>='A'&&psd[i]<='Z'){ tmp=psd[i]-'A'; }else{ tmp=psd[i]-'a'; } if(vis[tmp]==0){ psd[idx++]='a'+tmp; vis[tmp]=1; } } for(int i=0;i<26;i++){ if(vis[i]==0){ psd[idx++]='a'+i; } } for(int i=0;str[i]!=0;i++){ str[i]=psd[str[i]-'a']; if(str[i]>='A'&&str[i]<='Z'){ str[i]+=32; } } printf("%s\n",str); } return 0; }