• 单词统计_统计文章中每个单词出现的频率


    //预先存入工程文件的文章tex文档
    #include<stdio.h>
    #include<string.h>
    //using namespace std
    typedef struct//储存字符和权值
    {   char str[20];
        int mount;
    }tj;
    
    int main()
    {
        int i,j,k,n=0;  int allmount=0;
        tj TJ[3000];//********************只需修改该两行便能改变统计容量
        for(i=0;i<3000;i++)   //初始化 ,最大能记录3000种不同(单词)的权值信息
        {   
            for(j=0;j<20;j++)
                TJ[i].str[j]='';//存储字符的数组全部置空
            TJ[i].mount=0;//权值置为0
        }
        char strl[20]={''};//读取的字符串(单词)临时存储在该数组中
        char s[300000]={''}, *p;//存储从文本文档中读过来的信息(字符)//**************能读入的文本容量在此可修改
        FILE *fp;
        fp=fopen("文档.txt","r");  
        fgets(s,250000,fp);//从文本文档中读取250000个字符存储在s[60000]中(读不到换行后的文字信息)
        //char *p="the the the of of of he he ";
        i=0;    p=s;//用指针指向待统计的文本信息
        for(  ;*p!='';p++)//注意记事本里的空格字符' '和空字符''是有区别的(光标的能够放的最右位置就是右边有多少空格字符)
        {
            if(*p!=' '&&*p!=','&&*p!='.'&&*p!='?'&&*p!=';'&&*p!=':')   j=1;
            else   j=0;    
            if(j==1) 
            { strl[i]=*p;  i++; }//读取字符临时存储于strl[i]
            else
            {   if(strl[0]!=NULL)  //或strl[0]!=''
                {    for(j=0;j<n;j++)
                        if(!strcmp(TJ[j].str,strl)) //如果存在已有的单词与新读取的单词相同,权值+1 /*(TJ[j].str==strl)总是=0???*/ 
                        {   TJ[j].mount++;  
                            for(k=0;k<20;k++)   strl[k]='';//重新置strl[]为空串
                               break;  
                        }
                    if(j==n)  //原来读取的单词中没有于当前读取的单词相同的情况
                    {  strcpy(TJ[n].str,strl);                     
                       for(k=0;k<20;k++)  strl[k]='';
                       TJ[n].mount=1;  
                       n++; 
                    }
                    i=0;
                    allmount++;//遇到非字符串就加1
                }  
                //allmount++;//遇到非字符串就加1,放在此处时空格也被算入
            }    
        }
        printf("共统计%d个单词
    ", allmount);//输出统计的单词总数
        int jianyan=0;
        for(i=0;i<n;i++)//输出单词及其权值
        {   if(i%3==0)  printf("
    ");        
            printf("(%3d) %-15s",i,TJ[i].str);
            printf("%-5d",TJ[i].mount);    
            jianyan+=TJ[i].mount;
        }
        printf("
    (检验统计)共统计%d个单词
    ", jianyan);//*******************用于检验
        getchar();
        return 0;
    }
        

  • 相关阅读:
    答《同样 25 岁,为什么有的人事业小成、家庭幸福,有的人却还在一无所有的起点上?》
    [面试记录-附部分面试题]2014第一波的找工作的记录
    项目总结(二)->一些常用的工具浅谈
    项目总结(一)->项目的七宗罪
    Android学习笔记(三)Application类简介
    Android学习笔记(二)Manifest文件节点详解
    Android学习笔记(一)Android应用程序的组成部分
    Mac下搭建Eclipse Android开发环境
    Android开发必知--自定义Toast提示
    正则表达式(一)
  • 原文地址:https://www.cnblogs.com/IThaitian/p/3602590.html
Copyright © 2020-2023  润新知