这道题网上用STL的map做比较多。
但是我还是没有用哈哈哈。所以代码比较长。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char s[2001][80];
char country[2001][80];
char cou[2001][80];
int num[2001];
int cmp(const void*a,const void *b)
{
char *_a=(char *) a;
char *_b=(char *) b;
return strcmp(a,b);
}
int main()
{
int i,j,n;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
gets(s[i]);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++)
{
sscanf(s[i],"%s",country[i]);
}
j=0;
for(i=0;i<2001;i++) num[i]=1;
for(i=0;i<n;i++)
{
strcpy(cou[j],country[i]);
if(strcmp(country[i],country[i+1])==0)
{
num[j]++;
}
else j++;
}
for(i=0;i<j;i++)
{
printf("%s %d\n",cou[i],num[i]);
}
return 0;
}
这道题的人名好像不会重复。只要统计国家名出现的次数就好了。