#include<cstdio>
#include<cstring>
struct node
{
char name[20];
char password[20];
bool ischange;
}T[1005];
int main(void)
{
int n;
int num=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %s",T[i].name,T[i].password);
}
for(int i=0;i<n;i++)
{
int len=strlen(T[i].password);
for(int j=0;j<len;j++)
{
if(T[i].password[j]=='1')
{
T[i].password[j]='@';
T[i].ischange = true;
}
if(T[i].password[j]=='0')
{
T[i].password[j]='%';
T[i].ischange = true;
}
if(T[i].password[j]=='l')
{
T[i].password[j]='L';
T[i].ischange = true;
}
if(T[i].password[j]=='O')
{
T[i].password[j]='o';
T[i].ischange = true;
}
}
if(T[i].ischange==true)
num++;
}
if(num==0)
{
if(n==1) printf("There is 1 account and no account is modified\n");
else{
printf("There are %d accounts and no account is modified\n",n);
}
}
else
{
printf("%d\n",num);
}
for(int i=0;i<n;i++)
{
if(T[i].ischange==true)
{
printf("%s %s\n",T[i].name,T[i].password);
num--;
}
if(num==0)
break;
}
}
如果只有一个点没过,逻辑肯定是对的,只是哪里没有考虑周全。