注:这次使用C语言做的这个程序。个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多!

在程序中每一个地方我都做了注释,方便同学之间交流。也让老师容易看。程序也有很多不足的地方,但限于本人能力有限以及时间紧迫,难免出现很多问题,希望老师和同学能够帮助解决!

设计思路:(在代码中基本都做了注释,很好的体现了这里的设计思路)

1.这个程序首先我定义了一个结构体,内容包含单词的出现次数和单词的长度。

2.然后把所有单词出现的次数都设置为1,以便后面进行比较。

3.文件的读取工作很简单,以前学过。使用if((fp=fopen(filename,"r"))==NULL)语句即可。

4.然后开始识别单词,如果单词后面有空格则认为一个单词结束。使用flag标志,来进行确定。

5.最后根据出现次数进行排序,然后输出。

下面是程序读取文件后的运行结果:

代码部分:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct S_word
{
int num;
char a[];// 单词的长度
};
int main()
{
struct S_word W[]; //定义一个结构体W
int i,m,n,k;
char b[]; // 用来和a【10】交换的数组
FILE *fp; // 定义文件
char ch; //从文件中读取字符
int flag=; //标志空格后面是否有单词
int j=;
int temp; //排序时交换用
char filename[];
/****************首先将出现次数均设置为1****************************/
for(i=;i<;i++)
{ W[i].num=;
}
i=;
/****************首先将出现次数均设置为1****************************/
/****************打开文件****************************/
printf("Please input the name of the file :\n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("error opening!");
exit();
}
/****************打开文件****************************/
/****************读取文件内容****************************/
while(!feof(fp))
{
ch=fgetc(fp);
W[i].a[j]='\0';
if(ch>=&&ch<=||ch>=&&ch<=)
{
W[i].a[j]=ch; //识别单词
j++;
flag=;
}
else if(ch==' '&&flag==)
{
flag=;
j=;
n=i;
i++;
if(n>=) //每一个单词跟前面的比较,如果相同就使次数加一
{
for(m=;m<n;m++)
{
if(strcmp(W[n].a,W[m].a)==)
{
W[m].num++;
i=i-; //如果单词相同则认为是一个单词
}
}
}
}
}
/****************根据单词出现次数进行排序***************************/
for(n=;n<i-;n++)
{
k=n;
for(j=n+;j<i;j++)
if(W[j].num>W[k].num)
{ k=j;
temp=W[k].num;
W[k].num=W[n].num;
W[n].num=temp;
strcpy(b,W[k].a);
strcpy(W[k].a,W[n].a);
strcpy(W[n].a,b);
}
}
/****************根据单词出现次数进行排序**********/
/****************输出部分**************************/
printf("The most commonly 10 words:\n");
for(n=;n<=;n++)
{ printf("%s\n",W[n].a);
printf("其出现次数为:");
printf("%d\n",W[n].num);
}
/****************输出部分**************************/
return ; }

统计一段文字中出现频率最高的10个单词(c语言)的更多相关文章

  1. C++统计一段文字中各单词出现的频率

    #include <iostream> using namespace std; /* run this program using the console pauser or add y ...

  2. 使用PHP的strstr()函数来统计一段字符串中元音字母的个数(区分大小写)

    <?php/**练习:统计一段字符串中所有元音字母的个数(区分大小写)*/$str='This is a test file.'; //原始字符串echo $str.'<br>'; ...

  3. 一段文字中的几个keyword显示高亮

    将一段文字中的几个keyword显示高亮 演示样例:将"我的愿望是当个绿巨人,所以我想让我的皮(derma)肤是绿色"中的"皮肤"显示绿色. <span ...

  4. js或者jq判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色

    如何判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色(在html中)比如有body中有这么一串文字“驾驶的后视镜的华盛顿”,想要判断里面是否有“驾驶”这两个字,如果有就把这两个字变成 ...

  5. java 实现统计某段文字在内容中出现的次数

    http://outofmemory.cn/code-snippet/815/java-zishutongji 一个api,位于apache.commons.lang.StringUtils类下的一个 ...

  6. JS 实现计算一段文字中的字节数,字母数,数字数,行数,汉字数。

    看到了匹配,第一个想到了用正则表达式,哈哈,果然很方便.不过正则表达式高深莫测!我还没有研究明白啊..目前学了点皮毛.代码如下: <!DOCTYPE html PUBLIC "-//W ...

  7. Linux作业(三)-shell统计某文章中出现频率最高的N个单词并排序输出出现次数

    Linux课上的作业周三交,若有考虑不周到的地方,还请多多不吝赐教. shell处理文本相关的经常使用命令见此博客 # #假设输入两个參数 则第一个为统计单词的个数.第二个为要统计的文章 #假设输入一 ...

  8. 从一段文字中提取出uri信息

    package handle.groupby; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io ...

  9. unity插件,从一段文字中提取中文并去重

    using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEditor; using Uni ...

随机推荐

  1. 当CanTK遇到PhoneGap

    有朋友问能不能在CanTK和AppBuilder开发的APP里发送UDP数据,HTML5里只能用HTTPS/HTTP/WebSocket几种通讯方式,要使用UDP需要通过phonegap打包成APK等 ...

  2. java 连接msql数据库

    1.首先下载mysql的的java驱动,下载完成后把解压的mysql-connector-java-3.1.14-bin-g.jar文件放到eclipse的java项目下,然后构建路径. 2.java ...

  3. Java Swing事件处理机制

    Java Swing的事件处理机制 Swing GUI启动后,Java虚拟机就启动三个线程,分别为主线程,事件派发线程(也是事件处理线程)和系统工具包线程. 主线程 :负责创建并显示该程序的初始界面: ...

  4. C#对象的深拷贝与浅拷贝

    转载自:http://blog.163.com/hr_msn/blog/static/21549405120132250396584/ 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会 ...

  5. Qt之findChild

    简述 在Qt编程过程中,通常会有多个部件嵌套,而大多数部件都有父子依赖关系,但是有些情况下不能直接引用子部件,这时我们可以通过父部件来findChild -"查找孩子". 简述 查 ...

  6. Linux基础:软件安装(rpm,yum,源代码)

    Software Installation on Linux Linux安装分为rpm包(可通过yum或者是rpm命令安装)和源码包(源代码或者是编译过的二进制码)两种. Linux是开源系统,很多应 ...

  7. 学习HTML5之新特性标签一览(详细)

    HTML5又2008年诞生,HTML5大致可以等同于=html+css3+javascriptapi.... so --->支持css3强大的选择器和动画以及javascript的新的函数 先来 ...

  8. eclipse hibernate 插件测试1

    今天先测试了hibernate tools 安装 在eclipse marketplace里面搜索 hibernate tools 就能找到 网上很多文章所说的使用 install new softw ...

  9. JS基础--问题记录

    1. {}var a={};{}是一个空的对象,是 new Object();的简写. 2.判断元素是存在 //jQuery 对象中元素的个数.当前匹配的元素个数. size 将返回相同的值. if ...

  10. Excepion

    异常:就是程序在运行时出现不正常的情况. 异常由来:问题也就是现实生活中一个具体的食物,也可以通过java的类的形式进行秒速.并封装成对象.其实就是java对不正常情况进行毛素后的对象体现. 对于问题 ...