题目:http://pat.zju.edu.cn/contests/pat-a-practise/1035
题解:
模拟题。注意看清题目,那几个要修改的字母真的很容易看错。。。还是输出时候的单复数形式。。。
代码:
#include<cstdio> #include<cstring> #include<cmath> #include<string> #include<set> #include<vector> #include<algorithm> using namespace std; struct student { char id[15]; char pwd[15]; bool changed; } stu[1005]; int main() { int n,len,countx=0; bool changed=false; scanf("%d",&n); for(int i=0; i<n; ++i) { scanf("%s%s",stu[i].id,stu[i].pwd); len=strlen(stu[i].pwd); stu[i].changed=false; for(int j=0; j<len; ++j) { if(stu[i].pwd[j]=='1') { stu[i].pwd[j]='@'; stu[i].changed=true; } if(stu[i].pwd[j]=='0') { stu[i].pwd[j]='%'; stu[i].changed=true; } if(stu[i].pwd[j]=='l') { stu[i].pwd[j]='L'; stu[i].changed=true; } if(stu[i].pwd[j]=='O') { stu[i].pwd[j]='o'; stu[i].changed=true; } } if(stu[i].changed) { changed=true; ++countx; } } if(!changed) { if(n<2) printf("There is %d account and no account is modified\n",n); else printf("There are %d accounts and no account is modified\n",n); } else { printf("%d\n",countx); for(int i=0; i<n; ++i) if(stu[i].changed) printf("%s %s\n",stu[i].id,stu[i].pwd); } return 0; }