• 读入文本,找出出现频率最高的10个单词~~~~


    思路:先创建一个结构体word,用来存放单词,再创建一个空的与其一样的结构体o用来交换

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

    下面程序主体,变量声明,打开文本文件看是否文件为空

    void main()
    {
        FILE *fp;
        char ch;
        int k=0,h,m,l,j,x,i=0,sum;
        fp=fopen("D://huang.txt","r");
    if(fp==NULL)
    {
        printf("无法打开此文件 ");
        exit(0);
    }

    下面代码将单词存入结构体用while,if循环

    while(!feof(fp))
    {
        ch=fgetc(fp);
        if(ch<='Z'&&ch>='A')
        ch=ch+32;
           if(ch<='z'&&ch>='a')
    {
           w[k].c[i]=ch;
           i++;
           h=1;
    }
    else
    {if(h==1)
         k++;
         h=0;
         i=0;
    }
         sum=k;
    }

    下面是判断是否有相同单词,若有将结构体中的单词出现次数n置0

    for(i=0;i<sum;i++)
    {
          w[i].n=1;
    }

    for(m=0;m<sum;m++)
    {
          for(l=m+1;l<sum;l++)
    {
            if(strcmp(w[m].c,w[l].c)==0)
    {
               if(w[m].n==0||w[l].n==0)
                  continue;
                      else
    {
                 w[m].n++;
                 w[l].n=0;
    }
    }

    下面是按着单词出现次数n,进行排序

    for(i=0;i<sum;i++)
          for(j=i+1;j<sum;j++)
    {
          if(w[i].n<w[j].n)
    {
              o=w[i];
              w[i]=w[j];
              w[j]=o;
    }
    }

    下面是将结果输出再屏幕

    printf("单词总数%d ",sum);
    for(x=0;x<10;x++)
    printf("单词%s 出现次数 %d ",w[x].c,w[x].n);
    fclose(fp);
    }

    结果截图:

  • 相关阅读:
    便签一
    当代大学生存在问题及需求分析
    字符 单词数 行数
    流量管理系统——需求分析
    简单的四则运算
    强大的修图app--美图秀秀
    js 中 setTimeout()的用法
    .net spit 用法
    关闭 Activity 关闭方式 finish(), exit(), killProcess(), restartPackage()(转载)
    Android实现购物车功能
  • 原文地址:https://www.cnblogs.com/huang-wei/p/3576834.html
Copyright © 2020-2023  润新知