文本单词统计(C语言)
要求:任给一个英文文本文件,统计该文本的所有单词(不区分大小写),包括其出现的总次数,频度,以及出现的行号和位置
1.进行数据结构的准备(链表)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Coordinate {int line; //行号int row; //列号struct Coordinate* next;
} Coord;typedef struct NUM {char Num[100]; //单词float i; //次数Coord *P;struct NUM* next;
} number;void Sum();int main() {Sum(); //统计单词总数return 0;
}
2.Sum函数的具体描述
void Sum() {int i,j,row_1=1,line_1=1;float sum=0;char ch;number *N,*head,*end;head=(number*)malloc(sizeof(number));end=head;FILE*file;if((file=fopen("sum.txt","r"))==NULL) { //选择相应的文本文件printf("不能打开文件");exit(0);}N=(number*)malloc(sizeof(number));while(fscanf(file,"%s",N->Num)!=EOF) {N->P=(Coord*)malloc(sizeof(Coord));N->i=1;end->next=N;end=N;sum++;fscanf(file,"%c",&ch);if(ch!='\n') {N->P->row=row_1;N->P->line=line_1;row_1++;} else {N->P->row=row_1;N->P->line=line_1;row_1=1;line_1++;}N=(number*)malloc(sizeof(number));}end->next=NULL;fclose(file);printf("这篇文章共有%.0f个单词\n",sum);number *A,*B;Coord* HEAD,*M,*END;A=head->next;B=A->next;while(A->next!=NULL) {HEAD=(Coord*)malloc(sizeof(Coord));HEAD=A->P;END=HEAD;while(B->next!=NULL) {if(strcasecmp(A->Num,B->Num)==0) {M=(Coord*)malloc(sizeof(Coord));A->i=A->i+B->i;B->i=0;M=B->P;END->next=M;END=M;B=B->next;} elseB=B->next;}if(strcasecmp(A->Num,B->Num)==0) {A->i=A->i+B->i;B->i=0;M=B->P;END->next=M;END=M;}A=A->next;B=A->next;END->next=NULL;}HEAD=(Coord*)malloc(sizeof(Coord));HEAD=A->P;END=HEAD;END->next=NULL;number*Node;Node=(number*)malloc(sizeof(number));Node=head->next;while(Node->next!=NULL) {if(Node->i!=0) {printf("%+10s 出现频率为%.2f 共%.0f次 : ",Node->Num,(Node->i)/sum,Node->i);while(Node->P->next!=NULL) {printf("在第%d行 第%d列、",Node->P->line,Node->P->row);Node->P=Node->P->next;}printf("在第%d行 第%d列 ",Node->P->line,Node->P->row);printf("\n");Node=Node->next;} elseNode=Node->next;}if(Node->i!=0) {printf("%+10s 出现频率为%.2f 共%.0f次 : ",Node->Num,(Node->i)/sum,Node->i);while(Node->P->next!=NULL) {printf("在第%d行 第%d列、",Node->P->line,Node->P->row);Node->P=Node->P->next;}printf("在第%d行 第%d列 ",Node->P->line,Node->P->row);}
}
运行结果:
文本单词统计(C语言)相关推荐
- c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc
C语言文件加密解密及单词统计程序.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 高级语言程序设计 课程设计学 院 计算 ...
- python文本统计单词_Python实现文本单词统计
在以前的文章中,我提到过Python标准库中的collections模块中的Counter类.它的作用非常大,这里我们要用利它来实现单词统计.对于任意一篇全英文的文本文件,我们要列出其中每一个单词各自 ...
- C语言二叉树字符统计,C语言实现二叉树-利用二叉树统计单词数目
昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...
- 文本文件单词统计(C语言)
文本文件单词统计(C语言) 本人目前还是一位在校大学生,写文章的目的是为了记录一下当前所学,与其他爱好者或从业者相互学习交流.文本文件单词统计这个题目是学校的一次课程设计中的一道,在编写时也是参考了很 ...
- C语言怎么实现单词下落,如何用c语言实现单词统计
如何用c语言实现单词统计 输入一串字符串,输出其中有多少个单词. 代码如下:#include #include #define SIZE 20 int main(){ char str[SIZE]={ ...
- c语言字符统计2sdut,C语言实验——单词统计(字符串) SDUT
C语言实验--单词统计 Problem Description 从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格数可以是多个. Input 输入只有一行句子.仅有空格 ...
- ##英语文本的单词统计 排序并输出前5%
## 英语文本的单词统计 排序并输出前5% /*统计英语文本英语个数及150%***************************************************** *//* /* ...
- linux awk统计文本单词,shell统计文本中单词的出现次数
Ubuntu14.04 给定一个文本,统计其中单词出现的次数 # solution 1 grep与awk配合使用,写成一个sh脚本 fre.sh sh fre.sh wordfretest.txt # ...
- python 统计哈姆雷特词汇频率_Python练习15:文本单词频率统计:哈姆雷特,练习题,英文版...
文本词频统计::一篇文章,出现了哪些词?哪些词出现的最多? ...
最新文章
- fastdfs安装_用asp.net core结合fastdfs打造分布式文件存储系统
- bzoj 3118: Orz the MST(单纯形)
- python源代码-Python 源码深度剖析
- RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
- JSBinding+SharpKit / 菜单介绍
- Eclipse中使用Ctrl键卡顿响应慢的解决方法
- python常用8大算法
- 写给大家的编程书(2)
- 《编译原理》课程教学大纲
- Luogu T16048 会议选址
- 电脑端一些快捷开源创建平台
- pacs文件浏览工具_啥?网络攻击浏览器让你惊惶失措?这里教你防患未然
- linux cadence快捷键,如何设置Cadence 16.6中PCB Editor的快捷键
- 软件持续集成(CI)、持续交付(CD)和持续部署(CD)
- java.lang.IllegalStateException: onMeasure() did not set the measured dimension by calling setMeasur
- vue请求接口报错500,进行拦截提示服务器错误
- 魅蓝手机ROOT权限获取
- 在计算机中汉字能否排序,你不得不知的Excel表格中汉字多种排序方法
- Intouch2020与施耐德PLC通讯
- 正点原子开发板STM32F407ZG-基于AD7606进行八路数据采集