为什么还会是Qsort,说明它很重要吧。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<signal.h>
typedef struct s{
char str[32];
}Str;
Str c[101000];
int counts[101000];
int times = 1;
int cmp(const void *a,const void *b){
Str *f1 = (Str*)a;
Str *f2 = (Str*)b;
return strcmp(f1->str,f2->str);
}
int main(){
int n,m;
int i=0;
int num;
char s[32];
while(gets(s)){
strcpy(c[i++].str,s);
}
n = i;
qsort(c,n,sizeof(c[0]),cmp);
i = 1;
num = 1;
while(i<n){
if(strcmp(c[i].str,c[i-1].str)!=0){
printf("%s %.4lf\n",c[i-1].str,(double)100*num/n);
num = 1;
}
else num ++;
i++;
}
printf("%s %.4lf\n",c[i-1].str,(double)100*num/n);
return 0;
}