首页 > 代码库 > C语言词频统计设计
C语言词频统计设计
项目需求:
1.设计一个词频统计小软件,对给定的英文文章进行单词频率的统计。
2.文章中相应的标点不计入统计。
3.将统计结果以从大到小的排序方式输出。
设计:
1.因为功能相对简单,采用C语言直接进行编写。
2.项目包含的统计功能利用定义的结构体分别对单词和次数进行统计。
3.以字符串的形式读取单词,并对其中的每个字符进行标点分析。
4.统计完成后采用冒泡排序的方式对次数进行排序。
5.将整个统计结果循环输出。
部分核心代码:
结构体定义:
typedef struct addup{ char word[50]; int count;}R;
读取文本:
char temp[50]; R fin[10000]={"\0",0}; fp=fopen("f:/1.txt","r"); while(!feof(fp)) { fscanf(fp,"%s",temp); q=strlen(temp); n++; for(i=0;i<n;++i) if(strcmp(fin[i].word,temp)==0) { fin[i].count++; n--; break; } if(i>=n) { strcpy(fin[n-1].word,temp); fin[n-1].count++; } }
标点判定:
for(i=0;i<q;i++){ if(temp[i]==‘,‘||temp[i]==‘.‘||temp[i]==‘?‘||temp[i]==‘!‘||temp[i]==‘"‘) temp[i]=‘\0‘;}
冒泡排序:
for (i=0;i<n;i++) for (j=0;j<n-i;j++) { if (fin[j].count<fin[j+1].count) { ls[0]=fin[j+1]; fin[j+1]=fin[j]; fin[j]=ls[0]; } }
输出结果:
freopen("f:/2.txt","w",stdout); for(i=0;i<n;i++) { printf("%s : ",fin[i].word); s=0; for(j=0;j<fin[i].count;++j) s++; printf("%d 次",s); printf("\n"); } fclose(stdout);
测试用例:
因为词频统计单词重复几率不会过高,因此小篇幅文章不一定能得出好的测试结果,选取了马丁路德金的《I have a dream》演讲稿进行统计。
全篇单词量:1666
测试结果:
C语言词频统计设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。