#include <stdio.h> #include <string.h> #define S 50 //假定次數分界線爲50 #define T 150 //假定請求值分界線爲150 int main() { FILE * fp=fopen("output.txt","r"); struct date{ char name[10]; int x; //請求值大小 int sum=0; //垃圾請求的次數 }n[20000]; struct man{ char name[10]; //黑客用戶名 }hac[20]; int i=0,cnt=0,j,k=0,sign; while(fscanf(fp,"%s %*s %d",&n[i].name,&n[i].x)!=EOF){ sign=1; for(int z=0;z<k;z++)if(strcmp(hac[z].name,n[i].name)==0){sign=0;i--;break;}//碰到已經記錄的黑客名跳過 for(j=0;j<i&&sign;j++) //新讀入的(非黑客)是否已經出現過 if(strcmp(n[i].name,n[j].name)==0&&n[i].x<=T){ //若是已經出現過且爲垃圾請求 n[j].sum++; if(n[j].sum>=S)strcpy(hac[k].name,n[j].name),k++; //記錄新黑客用戶名 break; } if(n[i].x<=T&&j==i)n[i].sum++;//若是沒有出現過且爲垃圾請求 i++; } printf("%d\n",k);//輸出黑客數目 for(int j=0;j<k;j++) printf("%s\n",hac[j].name);//輸出名字 fclose(fp); return 0; }