zoukankan      html  css  js  c++  java
  • 分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的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 #
     

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

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

  • 相关阅读:
    python安装
    道德准则
    工作职场
    30岁之前
    互联网产品
    项目经理催活指南
    项目中如何找到优先级,以及工作时间安排
    语音行业相关概念
    cookie sessionStorage localStorage 的异同
    数组中map,forEach和for循环的区别
  • 原文地址:https://www.cnblogs.com/songjingchao/p/3577667.html
Copyright © 2011-2022 走看看