#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<algorithm> #include<map> #include<vector> #include<queue> using namespace std; //判断密码是否需要修改,注意对结构体的使用和函数的结构化 struct node{ char name[20],password[20]; bool ischange; //ischange==true表示password已被修改 }T[1005]; //crypt函数判断t的password是否需要被修改,若需要则对其修改并令计数器cnt加1 void crypt(node& t,int& cnt){ int len=strlen(t.password); for(int i=0;i<len;i++){//枚举password的每一位 if(t.password[i]=='1'){ t.password[i]='@'; t.ischange=true; }else if(t.password[i]=='0'){ t.password[i]='%'; t.ischange=true; } else if(t.password[i]=='l'){ t.password[i]='L'; t.ischange=true; }else if(t.password[i]=='O'){ t.password[i]='o'; t.ischange=true; } } if(t.ischange){ //如果t的password已修改,则令计数器cnt加1 cnt++; } } int main(){ int n,cnt=0;//cnt记录需要修改的password个数 scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s %s",T[i].name,T[i].password); T[i].ischange=false; //初始化所有密码未修改 } for(int i=0;i<n;i++){ crypt(T[i],cnt); //对T[i]的password判断是否需要修改 } if(cnt==0){ //没有password需要修改 if(n==1){ printf("There is %d account and no account is modified",n); }else{ //注意这里account的单复数和is/are的使用 printf("There are %d accounts and no account is modified",n); } }else{ //如果有password需要修改 printf("%d\n",cnt); //修改的password个数 for(int i=0;i<=n;i++){ //如果T[i]的password需要修改,则输出name和password if(T[i].ischange){ printf("%s %s\n",T[i].name,T[i].password); } } } system("pause"); return 0; }