分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的10个词打印出来。

首先解决的是文件读入的问题;

第二 统计单词个数,排序,输出频率最高的10个。

首先用二维数组存储单词和单词的个数;

然后根据单词个数的多少用冒泡排序;并且将单词的个数同时也拍好;然后输出

程序源代码

#define N 20
#define M 100
#include<stdio.h>
#include<string.h>
int main()
{char m[20];
int k=0;
int d[M];
char b[N],e[10000];
char a[M][N];
char q[N];
char c=0;
int i,j,t;
for(i=0;i<M;i++)
d[i]=0;
printf("请输入文件名\n");
gets(m);
FILE *fp;
int n=0,o=0;
if(!(fp=fopen(m,"r+")))
{printf("文件未找到\n");}
else
{
while(c!='#')/*判断是否到文件末尾*/
{for(i=0;i<N;i++)/*读入一个单词*/
{
fscanf(fp,"%c",&c);
if(c==' '||c=='#') break;
else b[i]=c;
}
b[i]='\0';/*结尾符*/

if(k==0) {strcpy(a[k],b);d[k++]++;}/*第一次,把b复制到a【0】*/
else {
for(i=0;i<k;i++)
{
if(!strcmp(b,a[i])) {d[i]++;break;}
}
if(i==k){strcpy(a[k],b);d[k]++;k++;}
}
}
}
for(i=0;i<k;i++)
{
for(j=0;j<k-i;j++)
{
if(d[j]<d[j+1])
{
t=d[j];
d[j]=d[j+1];
d[j+1]=t;
strcpy(q,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],q);
}
}
}
for(i=0;i<10;i++)
printf("%s %d\n",a[i],d[i]);
getchar();
return 0;}

 

 

 ni ni ni ni ni lo lo lo sd sd nn mmm ndfj fdjwo jf oq f i je jfn if ofnew jfb o oe bnfo fo bf o3fo #
 

 亲 屌丝 不会插入图片。。。不要鄙视我 。。。我  操蛋疼    

这个程序,参考了网上的一部分,询问同学,自己编写的排序部分;其实还可以再加上在程序中创建文件的功能不过,谁闲的无聊自己打那么多文字。。。。。所以没有实现那个功能;我擦 我是脑残 刚才插图片不知道怎么以前的内容就没了 气死我了。。所以直接复制代码了。。。

posted @ 2014-03-03 07:36  超/aiq越  阅读(289)  评论(0编辑  收藏  举报