水题,字符替换,不解释了.
#include <iostream>
#include <cstdio>
#include <memory.h>
const int maxn = 1010;
int n;
char usn[maxn][15], pwd[maxn][15];
bool modified[maxn];
int main(){
while(scanf("%d", &n) && n){
memset(modified, 0, sizeof(modified));
int ans = 0;
for(int i = 0; i < n; ++i){
scanf("%s %s", usn[i], pwd[i]);
int len = strlen(pwd[i]);
bool flag = 0;
for(int j = 0; j < len; ++j){
if(pwd[i][j] == '1'){
pwd[i][j] = '@';
flag = 1;
}else if(pwd[i][j] == '0'){
pwd[i][j] = '%';
flag = 1;
}else if(pwd[i][j] == 'l'){
pwd[i][j] = 'L';
flag = 1;
}else if(pwd[i][j] == 'O'){
pwd[i][j] = 'o';
flag = 1;
}
}
if(flag){
ans++;
modified[i] = 1;
}
}
if(ans == 0){
printf("No account is modified.\n");
}else{
printf("%d\n", ans);
for(int i = 0; i < n; ++i){
if(modified[i]){
printf("%s %s\n", usn[i], pwd[i]);
}
}
}
}
return 0;
}