c语言单词频率课程,找频率最高的单词
回复 楼主 爱睡觉的猫
以下代码在Dev C++上编译运行通过。学习过程中,欢迎指教!
具体代码如下:
#include
#include
#include
#include
#define BUFLEN 81
#define MORELEN 20
char delimiters[] = " \".,;;!?)(\n";
bool Seek_word(char *more, char *filename);
unsigned int Word_count(char *filename);
char *Most_words(char *filename, unsigned int count, char *data);
char *Word(char more[][MORELEN], unsigned int count, char *data);
int main(void)
{
char buf[BUFLEN] = "\0";
char more[MORELEN] = "\0";
char data[MORELEN] = "\0";
char filename[FILENAME_MAX] = "myfile.txt";
FILE *pfile = NULL;
unsigned int count = 0;
printf("该程序能将英文文章存储在myfile.txt文件中!\n");
printf("能在存储的文件中查找给定的单词是否存在!\n");
printf("也能够统计存储的文件中英文单词的数量和出现频率最高的单词!\n");
printf("注意:该程序统计单词时,是区分大小的。如:“And”与“and”是两个单词!\n");
if((pfile = fopen(filename, "w")) == NULL)
{
printf("打开 %s 文件失败!\n\a\a\a", filename);
exit(1);
}
setvbuf(pfile, NULL, _IOFBF, BUFSIZ);
printf("\n现在请从键盘输入要存储在myfile.txt文件中的英文文章:\n");
while(true)
{
fgets(buf, BUFLEN, stdin);
if(buf[0] == '\n')
break;
if(EOF == fputs(buf, pfile))
{
printf("写入 %s 文件错误!\n\a\a\a", filename);
exit(1);
}
}
fclose(pfile);
pfile = NULL;
printf("\n请输入要查找的单词: ");
scanf(" %s", more);
if(Seek_word(more, filename))
printf("\n%s有在文章中!", more);
else
printf("\n%s没有在文章中!", more);
printf("\n该文件中英文单词的数量为:%u!\n", Word_count(filename));
count = Word_count(filename);
printf("\n该文件中出现频率最高的单词为:%s!\n", Most_words(filename, count, data));
return 0;
}
bool Seek_word(char *more, char *filename)
{
FILE *pfile = NULL;
char buf[BUFLEN] = "\0";
if(!(pfile = fopen(filename, "r")))
{
printf("打开 %s 文件失败!\n\a\a\a", filename);
exit(1);
}
setvbuf(pfile, NULL, _IOFBF, BUFSIZ);
while(true)
{
if(!fgets(buf, BUFLEN, pfile))
break;
char *pWord = strtok(buf, delimiters);
if(pWord)
{
do
{
if(strcmp(pWord, more) == 0)
{
fclose(pfile);
pfile = NULL;
return true;
}
pWord = strtok(NULL, delimiters);
}
while(pWord);
}
}
fclose(pfile);
pfile = NULL;
return false;
}
unsigned int Word_count(char *filename)
{
FILE *pfile = NULL;
char buf[BUFLEN] = "\0";
unsigned int count = 0;
if(!(pfile = fopen(filename, "r")))
{
printf("打开 %s 文件失败!\n\a\a\a", filename);
exit(1);
}
setvbuf(pfile, NULL, _IOFBF, BUFSIZ);
while(true)
{
if(!fgets(buf, BUFLEN, pfile))
break;
char *pWord = strtok(buf, delimiters);
if(pWord)
{
do
{
++count;
pWord = strtok(NULL, delimiters);
}
while(pWord);
}
}
fclose(pfile);
pfile = NULL;
return count;
}
char *Most_words(char *filename, unsigned int count, char *data)
{
FILE *pfile = NULL;
char buf[BUFLEN] = "\0";
char more[count][MORELEN];
unsigned int count1 = 0;
if(!(pfile = fopen(filename, "r")))
{
printf("打开 %s 文件失败!\n\a\a\a", filename);
exit(1);
}
setvbuf(pfile, NULL, _IOFBF, BUFSIZ);
while(true)
{
if(!fgets(buf, BUFLEN, pfile))
break;
char *pWord = strtok(buf, delimiters);
if(pWord)
{
do
{
strcpy(more[count1++], pWord);
pWord = strtok(NULL, delimiters);
}
while(pWord);
}
}
fclose(pfile);
pfile = NULL;
strcpy(data, Word(more, count, data));
return data;
}
char *Word(char more[][MORELEN], unsigned int count, char *data)
{
int i = 0, j = 0;
int max = 0;
for(i = 0; i < count; ++i)
{
int n = 0;
for(j = 0; j < count; ++j)
{
if((strcmp(more[i], more[j])) == 0)
++n;
}
if(n > max)
{
strcpy(data, more[i]);
max = n;
}
}
return data;
}
还在学习过程中,欢迎指教!
c语言单词频率课程,找频率最高的单词相关推荐
- 聊聊程序员如何学习英语单词:写了一个记单词的小程序
背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件 ...
- 找字符串中最长单词C语言,C语言 在已知字符串中找最长单词
编程在一个已知的字符串中找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词. 比如:"ni hao world",最长单词是5个字母 这个题目其实不难,但是很多初学者会没 ...
- 使用Java统计英文文章的单词频率。
spark中的入门级程序:WordCount.这次不是使用spark来完成的,而是使用原生的Java API.只要英文文章符合书写的规定,那么这个程序就没有什么问题. 先将指定文件中的内容读取到Str ...
- C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书
<C语言学籍管理系统课程设计报告书>由会员分享,可在线阅读,更多相关<C语言学籍管理系统课程设计报告书(30页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课程设计报告学 ...
- [转载] 《Python语言程序设计》课程笔记
参考链接: Python程式设计语言 文章目录 第一部分 Python快速入门第1周 Python基本语法元素第2周 Python基本图形绘制 第二部分 Python基础语法第3周 基本数据类型3.1 ...
- 讲解c程序设计语言的比喻,《C语言程序设计》论文关于比喻在《C语言程序设计》课程教学中的应用论文范文参考资料...
<C语言程序设计>课程教学中有关比喻的<C语言程序设计>论文范文参考资料 比喻的用法是将本质上相似的两个事物联系起来,通过熟悉的事物接近事物,实现让学习者更好地熟悉新事物的目的 ...
- c语言 英文单词频率统计 哈希存储
c语言 英文单词频率统计 哈希存储 从一段英文文章中找到频率最大的几个单词,同时统计不同单词个数以及总单词个数,利用哈希进行存储. #include<stdio.h> #include&l ...
- 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试
Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...
- 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“itJava练习之翁恺MOOC——第六周
Java练习之翁恺MOOC 一.前言 一.题目 1.第六周 单词长度 2.第六周 GPS数据处理 二.代码实现 1.单词长度 2.GPS数据处理 总结 一.前言 零基础学习Java语言 一.题目 1. ...
最新文章
- oracle删除导入的文件,oracle创建表空间,导入出文件,删除
- wampserver修改mysql用户密码
- 举例浅介grep、sed、awk
- 学生电脑哪个牌子好_专卖工作服哪个牌子好
- C++单元测试框架的比较(zz)
- java web中整合mq_spring-web 集成 rabbitmq
- python全景图像拼接_超详讲解图像拼接/全景图原理和应用 | 附源码
- lfm雷达信号处理matlab,雷达信号处理-线性调频(LFM)Chirp信号脉冲压缩
- freeswitch 会议创建命令
- SQL sever2008 r2安装闪退的解决办法
- 智能手环开发之 实现蓝牙(BLE)基本功能
- css: 照片有如层叠效果
- Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
- tp5实现短信注册,调用第三方接口,电话通知,和短信通知都可以。
- APNG面向移动与未来的新动画图片格式揭秘与制作全技巧
- 骗子举报查询系统高级版源码
- 文本域自适应(textarea)
- 网赚APP的“俄罗斯套娃”游戏
- NOIP 2022 游记
- 用标签条码打印软件打印发货单标签