问题描述:
在当前目录中存在文件名为“case14.in”的文本文件,其内容为一篇英文文章(以EOF作为结束标志)。现要求读取该文本文件内容,统计文章中每个单词出现的次数,并输出出现次数最多的前5个单词及其出现次数(按出现次数由多到少的顺序输出,次数相同时按字典顺序输出,不足5个单词时,按顺序输出全部单词)。程序中注意如下细节:
(1)空格、标点符号与回车符起到分隔单词的作用。
(2)文章一行的末尾可能有连字符,出现连字符时,该行最末的字符串与下行最先出现的字符串构成一个单词;
(3)名词缩写算一个单词;
(4)数字不算单词;
(5)单词不区分大小写;
(6)输出时单词全是用小写。

#include <stdio.h>
#include <string.h>struct WORDCOUNT{char word[20];int count;
};int main()
{FILE *fp;struct WORDCOUNT wordcount[10000];char essay[200000], ch, temp[20];int i, j, k, len, count, t;fp = fopen("case14.in", "r");for(i=0; (ch = fgetc(fp)) != EOF; i++)essay[i] = ch;len = i;//全部字符写到essay数组中 for(i=0; i<len; i++){if(essay[i]=='-'){for(j=i+1; j<len; j++)essay[j-1] = essay[j];len--;}  else if(essay[i]>='A' && essay[i]<='Z')essay[i] +=32;else if(essay[i]>='a' && essay[i]<='z')essay[i]= essay[i];else essay[i] = ' ';}//删除多余空格 for(i=1; i<len; i++){if(essay[i-1]==' ' && essay[i]==' '){for(j=i+1; j<len; j++)essay[j-1] = essay[j];len--;}}//分词 k=0;for(i=0; i<10000, k<len; i++){for(j=0; j<20 && essay[k]!=' ' && k<len; j++, k++)wordcount[i].word[j] = essay[k];k++;}count = i;//赋值  for(i=0; i<count; i++)wordcount[i].count = 1;//计算单词数 for(i=0; i<count; i++){for(j=i+1; j<count; j++){if(strcmp(wordcount[i].word, wordcount[j].word)==0){wordcount[i].count += wordcount[j].count;for(k=j+1; k<count; k++)strcpy(wordcount[k-1].word, wordcount[k].word);count--;}}}//按单词排序for(i=0; i<count-1; i++){for(j=1; j<count-i; j++){if(strcmp(wordcount[j-1].word, wordcount[j].word) > 0){strcpy(temp, wordcount[j-1].word);strcpy(wordcount[j-1].word, wordcount[j].word);strcpy(wordcount[j].word, temp);t = wordcount[j-1].count;wordcount[j-1].count = wordcount[j].count;wordcount[j].count = t;}}}//按数量排序 for(i=0; i<count-1; i++){for(j=1; j<count-i; j++){if(wordcount[j-1].count < wordcount[j].count){strcpy(temp, wordcount[j-1].word);strcpy(wordcount[j-1].word, wordcount[j].word);strcpy(wordcount[j].word, temp);t = wordcount[j-1].count;wordcount[j-1].count = wordcount[j].count;wordcount[j].count = t;}}}if(count<5)for(i=0; i<count; i++)printf("%s %d\n", wordcount[i].word, wordcount[i].count);elsefor(i=0; i<5; i++)printf("%s %d\n", wordcount[i].word, wordcount[i].count);}

【C语言】英文文章出现次数最多的单词相关推荐

  1. java统计每个单词单词出现的次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出现的次数 ...

  2. java 单词出现次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    搜索热词 本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出 ...

  3. 算法-----前 k 个出现次数最多的单词

    题目 给一非空的单词列表,返回前 k 个出现次数最多的单词. 返回的答案应该按单词出现频率由高到低排序.如果不同的单词有相同出现频率,按字母顺序排序. 示例 1: 输入: ["i" ...

  4. 使用java,计算一段文本中出现英语单词次数最多的单词

    package cn.rrl.interview;import java.util.ArrayList; import java.util.Collections; import java.util. ...

  5. JavaScript:实现给定一个句子,返回出现次数最多的单词算法(附完整源码)

    JavaScript:实现给定一个句子,返回出现次数最多的单词算法 // Given a sentence, return the most occurring word/*** @param {st ...

  6. java出现次数最多的字母_关于Java:查找字母中每个字母出现次数最多的单词

    我编写了一个程序来读取文本文件,其中每一行都是一个单词. 代码的第一部分找到以字母的每个字母开头的最长单词,并将其存储在数组中. 我希望程序执行的第二部分是为字母表中的每个字母找到该字母出现次数最多的 ...

  7. python3学习笔记之三——统计英文文章中出现次数最多的单词前三

    思路:英文文章中的标点符号的处理,单词大小写的处理,再将单词通过字典的统计出现次数,最后用sorted()排序 #利用maketrans函数将标点符号映射为空格 table =str.maketran ...

  8. 统计英文字符串里重复次数最多的单词JAVA

    一次JAVA作业罢了 给定一段英文(看到内容感叹可怜的川宝倒了 我们想计算重复出现最多的单词,就会想要有两个信息 一是单词,二是单词出现的个数 HashMap提供的键值对存储方式可以很好地解决这个问题 ...

  9. 如何查找一篇英文文章中出现频率最高的单词?

    先将该字符串用空格分隔为一个数组, 遍历该数组,将其出现的次数以及单词元素用map存储起来,然后循环map,找出出现次数最多的项 function findMaxFrequency (str) {if ...

最新文章

  1. (转)winform下TCP通信的简单应用
  2. PHP程序员上相亲节目,结果遭女嘉宾瞬间全灭灯
  3. 互联网电商老三巨头在网站推广下逐步退居幕后新三巨头蓄势待发
  4. Python dataframe列拆分多行与统计
  5. java多线程之生产者消费者问题
  6. Highcharts实现图形报表(我主要实现javaweb开发的图形报表)
  7. 笔记本电脑黑屏但还在运作怎么办
  8. 隐藏“WPS Office云文档”在我的电脑中显示的快捷入口
  9. 【001】Zabbix学习笔记-Zabbix简介与部署
  10. 哈马德国际机场在全球最佳机场评选中排名第一;合肥君悦酒店浪漫呈现“悦-七夕”限定晚宴 | 全球旅报...
  11. dim时什么意思,妙解
  12. 划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!
  13. 怎么查别人qq登陆记录
  14. 深入理解计算机系统_第二章_信息的表示和处理
  15. 实现74X138和用74X138和74X139构成5-32线译码器
  16. ATmega8/16/32/64/128中文参考手册
  17. HHVM 是如何提升 PHP 性能的?
  18. 让企业用上金融合规专有云,腾讯云专有云TCE矩阵来支招儿!
  19. OpenSystemArchitect从入门到放弃
  20. [原创]jQuery小插件-collapsible

热门文章

  1. 我,28岁,10月无情被辞:想给还在手工测试的人提个醒......
  2. 浅谈Masonry的使用技巧
  3. 简单名称值对节点类NameValuePair
  4. HBASE RegionServer异常退出 Failed to close inode
  5. 钉钉企业内部应用 - 获取考勤打卡结果
  6. 11-04Physics-Aware Learning-based Longitudinal Vehicle Trajectory Prediction in Congested Traffic
  7. 浅谈国产ARM遇上低成本FPGA的结合优势,源码自取!
  8. 原生js实现的拾色器插件 - ColorPicker
  9. react 前端分页查询数据导出excel
  10. bzoj3663/4660CrazyRabbit bzoj4206最大团