这题目思路没问题就很容易。
犯了两个低级错误:
1.内层循环用了外层的下标。
2.结构体数组赋值的时候赋值成i的了,导致数组信息离散。
柳神的方法是用Vector,确实可以实现我自己编写的功能,可以省一些时间。
#include<stdio.h>
#include<string.h>
char in[5]="10lO";
char out[5]="@%Lo";
struct student{
char team[15]={};
char pw[15]={};
}stu[1005],temp;
void set(student &a,student &b){
strcpy(a.team,b.team);
strcpy(a.pw,b.pw);
}
int main(){
int N,num=0;
bool flag;
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%s %s",&temp.team,&temp.pw);
flag=false;
for(int j=0;j<10;j++){
for(int k=0;k<4;k++){
if(temp.pw[j]==in[k]){
temp.pw[j]=out[k];
flag=true;
}
}
}
if(flag) {
num++;
set(stu[num-1],temp);
}
}
if(num){
printf("%d\n",num);
for(int i=0;i<num;i++){
printf("%s %s\n",stu[i].team,stu[i].pw);
}
}
else if(N!=1){
printf("There are %d accounts and no account is modified\n",N);
}
else{
printf("There is 1 account and no account is modified\n");
}
return 0;
}