用C语言怎么编写一个统计名字次数的程序?急!急!急!!!!

怎样编写一个C语言程序统计下列名字出现的次数?
John
Tom
Jerry
Coco
John
Danny
Coco
Jerry
Danny
Jerry

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
struct person /*定义一个结构体*/
{
char name[20]; /*默认名字不超过20长度,且没有空格。*/
int time; /*出现次数*/
};
struct person data[200]; /*默认不超过200个不同名*/

int i;
for (i = 0; i < 200; i ++) /*初始化一下*/
{
data[i].name[0] = 0;
data[i].time = 0;
}

char temp[20];
int total = 0; /*一开始一共有0个人*/
while (scanf ("%s", temp) != EOF) /*循环读入所有姓名*/
{
int i = 0;
for (i = 0; i < total; i ++) /*和已经存在的姓名对比,看是否一样*/
{
if (strcmp (temp, data[i].name) == 0) /*如果一样*/
{
data[i].time ++;
break;
}
}
if (i == total) /*找了一圈没有找到已经存在的,就证明这个名字从来没有出现过,存一个新的*/
{
strcpy (data[total].name, temp);
data[total].time = 1;
total ++;
}

}
for (i = 0; i < total; i ++) /*最后循环把结果输出*/
printf ("%s ---- %d\n", data[i].name, data[i].time);

system ("pause");
return 0;
}

祝学习进步!
温馨提示:答案为网友推荐,仅供参考