统计英文文本文档中前十个出现频率最多的单词

写一个程序:统计英文文本文档中前十个出现频率最多的单词

语言:C语言

思路:1.首先创建一个结构体用来存放单词和各单词出现的频率

        2.打开文件

        3.统计单词和单词出现的频率

        4.对单词的频率排序然后输出

源程序:

#include<stdio.h>
#include<string.h>
struct words
{
char c[30];
int n;
}w[10000];


int main()
{
FILE *fp;
char b[30],ch;
int i=0,m=1,j=0,k=0,t=0,f=0;
fp=fopen("d://a.txt","r+");
while((ch=fgetc(fp))!=EOF)
{ 
if('A'<=ch&&ch<='Z') ch=ch+32;


if('a'<=ch && ch<='z')
{
    b[i]=ch;
    i++;
    f=1;
}
else
{
if(ch=='-'&&(ch=fgetc(fp))=='\n')
{
    f=0;
}


else
{
if(f==1)
{ 
    b[i]='\0';
    i=0;
    f=0;
    m=0;
for(j=0;j<k;j++)
{
if(strcmp(b,w[j].c)==0)
{
    m=1;
    break;
}
}
if(m) w[j].n++;
else
{
    w[k].n=1;strcpy(w[k].c,b);k++;}
}
}


if('A'<=ch && ch<='Z') ch+=32;
if('a'<=ch && ch<='z')
{
    b[i]=ch;
    i++;
    f=1;
}
}
}

for(i=0;i<k&&i<10;i++) //统计前十个
{
    t=0;
    while(w[t].n==0) t++;
    for(j=1;j<k;j++)
    {
        if(w[j].n>w[t].n) t=j;
        else
            if(w[j].n==w[t].n)
            {
                if(strcmp(w[j].c,w[t].c)<0)
                    t=j;
            }
    }
    printf("%s %d\n",w[t].c,w[t].n);
    w[t].n=0;
}
return 0;
}

运行结果:

 

以上是博客内容

谢谢!

 

转载于:https://www.cnblogs.com/cairongyu/p/3576720.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值