开放题代码二

#include <stdio.h>
#include <string.h>
#define S 50  //假定次数分界线为50 
int main()
{
	FILE * fp=fopen("Request.txt","r");
	struct date{
		char name[10]; 
		int sum=0;	//用户名出现次数 
	}n[20000];
	struct man{
		char name[10];	//黑客用户名 
	}hac[20];
	int i=0,j,k=0,sign;
	while(fscanf(fp,"%s %*s %*s",&n[i].name)!=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[j].sum++;
				if(n[j].sum>=S)strcpy(hac[k].name,n[j].name),k++;  //记录新黑客用户名 
				break;
			}
		if(j==i)n[i].sum++;//如果没有出现过 
		i++; 
	}
	printf("%d
",k);//输出黑客数目 
	for(int j=0;j<k;j++)
		printf("%s
",hac[j].name);//输出名字 
	fclose(fp); 
	return 0;
}
原文地址:https://www.cnblogs.com/zlonglongago/p/10350830.html