/*

运行此程序之前要将写有单词的英文文章以.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语言统计文章单词出现的次数,统计英文文章中单词出现频率相关推荐

  1. c语言对一篇英文文章进行统计,C语言统计一篇英文短文中单词的个数实例代码...

    具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...

  2. 统计一段英文中单词的个数c语言,C语言统计一篇英文短文中单词的个数实例代码...

    具体代码如下所述: #include #define N 1000 void main(){ char en[N][81]; int i,j,num=0,n,state; //num 用来统计单词的个 ...

  3. Android应用统计-使用时长及次数统计(一)

    关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...

  4. 统计英文名著中单词出现频率

    统计单词出现的次数,不同的单词数,单词的重复率 目的 之前在一本学习英文的书中看到成人中文常用词汇5000字,英文大概2-3万字,感到很诧异,所以就有了这两篇文章.之前的中文名著统计 统计名著中汉字出 ...

  5. android判断点击次数_Android应用统计-使用时长及次数统计(一)

    关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...

  6. 统计英文文件中单词出现频率

    统计一个文件里每个单词出现的次数 #1.打开指定文件 #2.删除除了单词之外所有标点符号,并将每个单词分割开 #3.统计每个单词出现次数

  7. python统计一篇英文短文中单词出现的频率、内存使用分析

    怎么统计一篇文档或者一段字符串中某个单词出现的次数.这是在数据分析或者统计学,或者在python的机器学习中常常要做的工作. 统计单词出现的频率的方法有两种:一种是使用for循环,一种是使用pytho ...

  8. python输入一个英文句子、翻转句子中单词的顺序_ODOA(1) 翻转句子中单词的顺序(C语言实现)...

    动动手才发现自己现在的在C/C++方向的几个问题: 对自己的入门语言C语言变得非常陌生 编程的思维固定在找既有的方法,主要原因是python写多了,基本上所有常见的问题,都有现成的方法,让自己变得懒惰 ...

  9. c语言,成绩输出直方图,编写一个程序,打印输入中单词长度的直方图

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define inside 1 #define outside 0 /*编写一个程序,统计并打印输入单词不同长度的个数,并打印输入中单 ...

最新文章

  1. 超全超实用的Javascript类库和jQuery插件大全之一:图片,地图和图形
  2. C++ STL : 模拟实现STL中的容器适配器priority_queue
  3. 软件架构(9)---UML 图
  4. 易混单词 expect VS except
  5. 成就富翁:赚钱八大定律!
  6. windows 下访问bsd系统分区的小工具 ____FFS driver mount manager
  7. 耳机及音响--煲机软件
  8. Advanced IP Scanner - 网络扫描器
  9. Redis源码分析之双索引机制
  10. 联邦学习(Federated Learning)学习小记
  11. 密集预测任务的多任务学习(Multi-Task Learning)研究综述 - 网络结构篇(上)
  12. 【Javaweb】【答卷】萌狼蓝天大二上学期期末Javaweb考试复习卷(一)
  13. lzo的正确c语言代码,LZO的问题
  14. 【SourceTree】项目版本控制
  15. 怎么理解卡卷会员接口
  16. 计算机毕业设计(51)java小程序毕设作品之教室图书馆座位预约小程序系统
  17. 有两种人,看似“缺心眼”,实际“聪明绝顶”,堪称“大智若愚”
  18. 编译出现 unused parameter [-Werror,-Wunused-parameter]
  19. [HNOI2017/AHOI2017]影魔
  20. Linux下tomcat进程莫名消失

热门文章

  1. 教育行业分享-基础篇
  2. BigDecimal的用法之乘除、保留小数
  3. 华为S5系列交换机配置
  4. M: Mysterious Conch(哈希表)
  5. 机械键盘 单个按键不灵 修理
  6. C语言:一维数组—一个萝卜一个坑问题
  7. 用ASP.NET建立一个在线RSS新闻聚合器
  8. 说说移动设备的各种标识码(DeviceID, IMEI, UUID, UDID, OAID, IDFA, GAID)
  9. 黑客攻击入侵流程及常见攻击工具
  10. 2198: 小P当志愿者送餐