#include
#include
struct wordkeep
{
char c[20];
int num;
}
word[10000];
int main()
{
FILE * fp;
fp = fopen("case1.in", "r");
char w[20],ch;
int i,m,j,k,t,f;
m = 1;
i = j = k = t = f = 0;
while ((ch = fgetc(fp)) != EOF)
{
//小写转大小
if (ch >= 'A' && ch <= 'Z') ch += 32;
if (ch >= 'a' && ch <= 'z')
{
w[i] = ch;
i++;
f = 1;
}
//如果不是字母的话,先判定是不是连字符。
else
{
if (ch == '-' && (ch = fgetc(fp)) == '\n') f = 0;
else
{
if (f)
{
//已经找到一个完整的单词
w[i] = '\0';
i = 0;
f = 0;
m = 0;
//在已有的单词中逐个对比
for (j = 0; j
{
if (strcmp(w, word[j].c) == 0)
{
m = 1;
break;
}
}
//找到则单词数加1
if (m) word[j].num++;
//没找到安放新单词
else
{
word[k].num = 1;
strcpy(word[k].c, w);
k++;
}
}
}
}
}
//输出前5个最多的单词
for (i = 0; i
{
t = 0;
while (word[t].num == 0) t++;
for (j = 1; j
{
if (word[j].num > word[t].num) t = j;
else if (word[j].num == word[t].num)
{
if (strcmp(word[j].c, word[t].c)
}
}
printf("%s %d\n", word[t].c, word[t].num);
//每个单词输出后,单词数就清零,不影响下次的查找。
word[t].num = 0;
}
fclose(fp);
return 0;
}
收起
作业帮用户
2017-09-26
举报