zoukankan      html  css  js  c++  java
  • 统计英文文本文档中前十个出现频率最多的单词

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

    语言: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))=='
    ')
    {
        f=0;
    }
    
    
    else
    {
    if(f==1)
    { 
        b[i]='';
        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
    ",w[t].c,w[t].n);
        w[t].n=0;
    }
    return 0;
    }

    运行结果:

     

    以上是博客内容

    谢谢!

  • 相关阅读:
    归并排序
    CTE 递归
    Cordova 入门文档
    Javascript 原型链
    Windows11 正式版偷渡开启安卓子系统
    快速解决gerrit merge confict问题
    利用VPS来搭建个人主页
    检测串行序列10010
    Verilog语法总结
    深度学习中常见优化算法学习笔记
  • 原文地址:https://www.cnblogs.com/cairongyu/p/3576720.html
Copyright © 2011-2022 走看看