C语言统计文章单词出现的次数,统计英文文章中单词出现频率
/*
运行此程序之前要将写有单词的英文文章以.txt格式保存在d:\word.txt
*/
#include
#include
#include
#include
#include
#include
#define N 20
#define M 100000
#define STACK_INIT_SIZE 100
typedef struct ntree
{
char a[N];
int i;
struct ntree *left;
struct ntree *right;
}tree;
typedef struct WordNumber
{
char a[N];
int i;
struct WordNumber *left;
struct WordNumber *right;
}WN;
typedef struct {
tree **base;
tree **top;
int stacksize;
}sqstack;
int sign=0,sum=0,n;
char ko[N];
WN wonu[M];
int traverse(tree *);
int initstack(sqstack *S);
tree *push(sqstack *s,tree *p);
tree *pop(sqstack *s);
int createtree(tree *,char *,char *,long ,long);
int jfcmp(char *,char *,int);
int sort();
//主函数
int main()
{
tree root;
FILE *fp;
long at,fg;
char ch;
int i;
char t[M],wd[N];
printf(“ 准备扫描文章\n”);
fp=fopen(“d:\\word.txt”, “rt”);
if(fp==NULL)
{
printf(“文件不存在\n”);
return 0;
}
at=0;
do
{
/* read a char from the file */
ch = fgetc(fp);
if(isprint(ch)){t[at]=ch,at++;}
} while (ch != EOF);
fclose(fp);
for(i=0;i
printf(“ 按字典顺序查看单词统计结果按0\n”);
printf(“ 按单词出现频率顺序查看统计结果按1\n 输入数字:”);
scanf(“%d”,&n);
fg=0;
i=0;
strncpy(wd,ko,N);
while(fg
{
if(isalpha(t[fg]))
{
wd[i]=t[fg];
i++;
}
if(t[fg]==32&&i>0)break;
fg++;
}
strncpy(root.a,ko,N);
strcpy(root.a,wd);
root.i=1;
root.left=NULL;
root.right=NULL;
i=0;
strncpy(wd,ko,N);
while(fg
{
if(isalpha(t[fg]))
{
wd[i]=t[fg];
i++;
}
if(t[fg]==32&&i>0)break;
fg++;
}
createtree(&root,wd,t,fg,at);
traverse(&root);
if(n==1)sort();
printf(“在此文章中出现的单词数目是%d\n”,sum);
return 0;
}
//创建一棵二叉查找树
int createtree(tree *r,char *wd,char *t,long fg,long at)
{
tree *p,*q;
int i,j;
while(1)
{
p=r;
while(p!=NULL)
{
j=jfcmp(wd,p->a,N);
if(j<0)
{
q=p;
p=p->left;
if(p==NULL)
{
p=(tree *)malloc(sizeof(tree));
strncpy(p->a,ko,N);
strncpy(p->a,wd,N);
p->i=1;
p->left=NULL;
p->right=NULL;
q->left=p;
break;
}
}
if(j>0)
{
q=p;
p=p->right;
if(p==NULL)
{
p=(tree *)malloc(sizeof(tree));
strncpy(p->a,ko,N);
strncpy(p->a,wd,N);
p->i=1;
p->left=NULL;
p->right=NULL;
q->right=p;
break;
}
}
if(j==0)
{
p->i++;
break;
}
}
i=0;
strncpy(wd,ko,N);
while(fg
{
if(isalpha(t[fg]))
{
wd[i]=t[fg];
i++;
}
if(t[fg]==32&&i>0)break;
fg++;
if(fg>=at)return 0;
}
}
return 0;
}
//比较两个字符串的大小(字典中)
int jfcmp(char *a,char *b,int n)
{
int i;
for(i=0;i
{
if(a[i]==b[i])i++;
if(a[i]
if(a[i]>b[i])return 1;
}
return 0;
}
//中序遍历一棵二叉树,非递归实现。
int traverse(tree *r)
{
tree *p,*q;
sqstack l;
initstack(&l);
p=r;
push(&l,p);
while(p==r||l.base!=l.top)
{
if(p->left!=NULL)
{
push(&l,p->left);
q=p;
p=p->left;
q->left=NULL;
}
else
{
p=pop(&l);
if(n==0)
{
printf(“%-6d”,sign);
printf(“%-20s次数–>”,p->a);
printf(“%-6d\n”,p->i);
}
sum+=p->i;
strncpy(wonu[sign].a,ko,N);
strncpy(wonu[sign].a,p->a,N);
wonu[sign].i=p->i;
sign++;
if(p->right!=NULL)
{
push(&l,p->right);
q=p;
p=p->right;
q->right=NULL;
}
}
}
return 0;
}
int initstack(sqstack *S)
{
S->base=(tree **)malloc(STACK_INIT_SIZE*sizeof(tree));
if(!S->base)exit(-1);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return 0;
}
tree *push(sqstack *s,tree *p)
{
*(s->top)=p;
s->top++;
return 0;
}
tree *pop(sqstack *s)
{ tree *p;
if(s->top==s->base)return 0;
else p=*(–s->top);
return p;
}
int sort()
{
int i,j,temp;
char s[20];
for(i=0;i
for(j=0;j
{
if(wonu[j].i
{
strncpy(s,wonu[i].a,N);
strncpy(wonu[j].a,wonu[j+1].a,N);
strncpy(wonu[j+1].a,s,N);
temp=wonu[j].i;
wonu[j].i=wonu[j+1].i;
wonu[j+1].i=temp;
}
}
for(i=0;i
{
printf(“%-20s次数–>%d\n”,wonu[i].a,wonu[i].i);
}
return 0;
}
C语言统计文章单词出现的次数,统计英文文章中单词出现频率相关推荐
- c语言对一篇英文文章进行统计,C语言统计一篇英文短文中单词的个数实例代码...
具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...
- 统计一段英文中单词的个数c语言,C语言统计一篇英文短文中单词的个数实例代码...
具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...
- Android应用统计-使用时长及次数统计(一)
关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...
- 统计英文名著中单词出现频率
统计单词出现的次数,不同的单词数,单词的重复率 目的 之前在一本学习英文的书中看到成人中文常用词汇5000字,英文大概2-3万字,感到很诧异,所以就有了这两篇文章.之前的中文名著统计 统计名著中汉字出 ...
- android判断点击次数_Android应用统计-使用时长及次数统计(一)
关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...
- 统计英文文件中单词出现频率
统计一个文件里每个单词出现的次数 #1.打开指定文件 #2.删除除了单词之外所有标点符号,并将每个单词分割开 #3.统计每个单词出现次数
- python统计一篇英文短文中单词出现的频率、内存使用分析
怎么统计一篇文档或者一段字符串中某个单词出现的次数.这是在数据分析或者统计学,或者在python的机器学习中常常要做的工作. 统计单词出现的频率的方法有两种:一种是使用for循环,一种是使用pytho ...
- python输入一个英文句子、翻转句子中单词的顺序_ODOA(1) 翻转句子中单词的顺序(C语言实现)...
动动手才发现自己现在的在C/C++方向的几个问题: 对自己的入门语言C语言变得非常陌生 编程的思维固定在找既有的方法,主要原因是python写多了,基本上所有常见的问题,都有现成的方法,让自己变得懒惰 ...
- c语言,成绩输出直方图,编写一个程序,打印输入中单词长度的直方图
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define inside 1 #define outside 0 /*编写一个程序,统计并打印输入单词不同长度的个数,并打印输入中单 ...
最新文章
- 超全超实用的Javascript类库和jQuery插件大全之一:图片,地图和图形
- C++ STL : 模拟实现STL中的容器适配器priority_queue
- 软件架构(9)---UML 图
- 易混单词 expect VS except
- 成就富翁:赚钱八大定律!
- windows 下访问bsd系统分区的小工具 ____FFS driver mount manager
- 耳机及音响--煲机软件
- Advanced IP Scanner - 网络扫描器
- Redis源码分析之双索引机制
- 联邦学习(Federated Learning)学习小记
- 密集预测任务的多任务学习(Multi-Task Learning)研究综述 - 网络结构篇(上)
- 【Javaweb】【答卷】萌狼蓝天大二上学期期末Javaweb考试复习卷(一)
- lzo的正确c语言代码,LZO的问题
- 【SourceTree】项目版本控制
- 怎么理解卡卷会员接口
- 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统
- 有两种人,看似“缺心眼”,实际“聪明绝顶”,堪称“大智若愚”
- 编译出现 unused parameter [-Werror,-Wunused-parameter]
- [HNOI2017/AHOI2017]影魔
- Linux下tomcat进程莫名消失