/*
File name:词频统计.cpp
Author:杨柳
Date:2017.3.25
IDE:DEV-c++
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NUM 100000
struct Word      //单词结构体
{
int  num;//单词频数
char ch[20];//每一个单词
} word[MAX_NUM];
int select=1;//select 为是否退出系统的标记//向用户提供帮助说明
void help()
{printf("\n(1)可导入任意英文文本文件");printf("\n(2)统计该英文文件中单词数和各单词出现的频率(次数),并能将单词按字典顺序输出");printf("\n(3)将单词及频率写入文件");
}//获取英文文本信息及总单词数
void  readfile(char essay[],int total_num,char ch){FILE *fp;int i=1;fp=fopen("data.txt","r");if(!fp){printf("\n打开文件data.txt失败!");exit(0);}ch=fgetc(fp);//ch为文章第一个字符,判断文章文件是否为空。if(ch!=EOF){essay[0]=ch;for(i;!feof(fp);i++) //如果未遇到读入文本结束符{essay[i]=fgetc(fp);//获取文章,将文章中的各个字符放到essay数组中}essay[i]='\0';//在读取文章时,并没有将字符串的结束标志读进去,为了后面使用strtok等字符串的相关函数,加上’\0’。total_num=i;//记录单词的数量}if(0==i)printf("\n文件为空,请选择英文文本输入!");elseprintf("\n");fclose(fp);}/*向文件写入英文文本信息*/
void  writefile(char essay[] ,int total_num, char ch)
{char essay_str[MAX_NUM];FILE *fp;char str=' ';getchar();int i=0;fp=fopen("data.txt","w");if(!fp){printf("\n打开文件data.txt失败!");}printf("请输入:");gets(essay_str);if(ch!=EOF)fputc(str,fp);fputs(essay_str,fp);//将新增的文章读到文件上strcat(essay,essay_str);readfile(essay,total_num,ch);printf("添加成功");printf("\n");fclose(fp);
}//显示英文文本
void show(char essay[],int total_num,char ch)//显示文章{if(ch==EOF)printf("\n文件为空,请选择英文文本输入!");elseprintf("%s",essay);printf("\n");
}/*按字典顺序进行单词排序*/
void sort(int k)
{int num;int i,j,t;  //定义局部变量i,jchar temp[20];  //临时字符数组for(i=0;i<k-1;i++){for(j=k-1;j>i;j--)if((strcmp(word[j].ch,word[j+1].ch)==1)) //比较两个单词,若后一个单词大于前一个,进行调换{strcpy(temp,word[j].ch);//交换单词strcpy(word[j].ch,word[j+1].ch);strcpy(word[j+1].ch,temp);t=word[j].num;//交换单词频数word[j].num=word[j+1].num;word[j+1].num=t;}}
} //统计单词频数
void count(char *essay,char *b)
{int j,i=0;//i记录有多少不同的单词,n记录相同单词出现的次数char *t;bool judge=false;int sum=0;FILE *fp;for(t=strtok(essay,b);t!=NULL;t=strtok(NULL,b)){//利用strtok函数将文章中的单词分离开。sum++;//单词总数strcpy(word[i].ch,t);(word[i].num)=1;for(j=0;j<i;j++)if(strcmp(word[i].ch,word[j].ch)==0){(word[j].num)++;judge=true;}if(judge)i--;i++;judge=false;}i=i-1;sort(i);printf("单词总数为:%d\n",sum);fp=fopen("count.txt","w");if(!fp){printf("\n打开文件count.txt失败!");exit(0);} fprintf(fp,"单词总数为:%d\n",sum);将单词总数读到文件中for(j=0;j<i;j++){fprintf(fp,"%-16s\t%d\t\n",word[j].ch,word[j].num);//将单词、单词频数读到文件中printf("%-16s\t%d\t\n",word[j].ch,word[j].num);//将单词、单词频数打印到屏幕上}fclose(fp);}void menu()
{int item,total_num=0;//total_ch记录文章中的总字符数char b[20]={',','.','?',':','-',' '},essay[2*MAX_NUM],ch;printf("\n");printf("              *********************************************************\n");printf("              #                                                       #\n");printf("              #                 词频统计                              #\n");printf("              #                                                       #\n");printf("              *********************************************************\n");printf("              #                                                       #\n");printf("              #           1.显示英文文本                              #\n");printf("              #                                                       #\n");printf("              #           2.显示单词总数、全部单词及频数              #\n");printf("              #                                                       #\n");printf("              #           3.帮助                                      #\n");printf("              #                                                       #\n");printf("              #           4.输入英文文本                              #\n");printf("              #                                                       #\n");printf("              #           5.退出系统                                  #\n");printf("              *********************************************************\n"); printf("请选择您需要的操作序号(1-5)按回车确认:");readfile(essay,total_num,ch);scanf("%d",&item);printf("\n");switch(item){case 1:show(essay,total_num,ch);break;case 2:count(essay,b);break;case 3:help();break;case 4:writefile(essay,total_num,ch);break;case 5:select=0;break;default:printf("请在1-5之间选择\n");break;}
}int main()
{ while(select){menu();}return 1;
} 

统计英文文件中单词数和各单词出现的频率(次数)相关推荐

  1. 学校作业5_3字符串_统计英文文件中的单词数(头哥作业[Python])

    本系列文章为同学困扰的python做出作业答案汇总,答案皆为本学生自己边学边做汇总上传的,编排不易,希望大家喜欢. 本作业所有内容均在github上有留存,每次作业github上会最先发布,CSDN上 ...

  2. Python练手小程序—统计英文文件中单词出现的的个数

    在GitHub上发现一些很有意思的项目,由于本人作为Python的初学者,编程代码能力相对薄弱,为了加强Python的学习,特此利用前辈们的学习知识成果,自己去亲自实现. 一周没有更新了,主要还是自己 ...

  3. 2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和 ‘ ‘ 。 每个单词只由小写

    2022-11-10:写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率. 为了简单起见,你可以假设: words.txt只包括小写字母和 ' ' . 每个单词只由小写 ...

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

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

  5. python统计英文文章中单词的个数无文件_求Python统计英文文件内单词个数的思路...

    感谢微博上@刘鑫-MarsLiu的TAG每天一个小程序. 你会如何实现上述题目的要求? #!/usr/bin/env python # -*- coding: utf-8 -*- "&quo ...

  6. 5.1统计英文文件中的单词数python

    本关任务:编写一个能统计文件中单词数量的小程序,用replace替换文本内的标点 代码如下: # 补充你的代码 a = input() import string with open(f'/data/ ...

  7. 统计英文句子中有多少个英文单词 单词之间用空格分开

    #include<iostream> #include<string.h> using namespace std; void main() { int i,j=0; char ...

  8. 手机 download .cu .log_手机清理内存,这些英文文件哪些是可以删除的?看完就知道...

    对于智能手机,我们除了一些日常生活中的必须使用功能之外,很多时候,都没有太过于仔细的却挖掘他它一些功能,例如手机清理内存,我们最多就是用手机管家清理一下,或者是将一些缓存的视频照片删除,其实这样清理手 ...

  9. python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...

    本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序 ...

最新文章

  1. 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
  2. MTD的坏块管理(一)-快速了解MTD的坏块管理
  3. 【修订】为什么OO方法是有本质缺陷的?
  4. VB.NET 创建WORD文档
  5. php调取 zabbix实时数据_Linux运维必知的Zabbix故障排错实战
  6. android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...
  7. hexo部署云服务器的全过程
  8. mos管电路_MOS管笔记之外围电路和缓冲电路设计
  9. dubbo之rmi协议使用
  10. 1371. 每个元音包含偶数次的最长子字符串
  11. 二十一、K8s集群设置3-HTTPS-Cert-manager
  12. [论文总结] 深度学习在农业领域应用论文笔记9
  13. 计算机网络(2)——电路交换 报文交换 分组交换
  14. 一元三次方程求解matlab_为什么一元n次代数方程必有n个根?
  15. 学习继电器的工作原理及作用
  16. 英特尔芯片组系列 服务器,Intel 7系列芯片组正式发布 不同型号解析
  17. 车载导航蓝牙知识介绍
  18. python msproject_MS Project(*.mpp文件)到PowerBi
  19. Java 对接打印机接口
  20. Blender Python相关操作指令(bpy)

热门文章

  1. 长盈通递交注册:拟募资5亿 光谷将诞生一家科创板企业
  2. 普通人做自媒体怎么赚钱?
  3. Linux安装RabbitMQ详细教程Java使用
  4. 如何做好基层技术管理工作?
  5. 对计算机性能的描述,对电脑进行评价,硬件健康,性能测试, WINDOWS体验指数...
  6. Cache的基本原理以及简单操作
  7. 08.OpenWrt-连接wifi网络
  8. mqtt qos属性
  9. C语言试题七十七之请编写函实现渔夫打鱼晒网问题
  10. 传媒行业的新媒体之路:机遇与挑战共存