当前位置:首页 » 编程语言 » c语言词频统计

c语言词频统计

发布时间: 2022-09-18 02:13:56

A. c语言课设英文词频计算程序

思路示意:
char word[1000][20] ={0}; //统计1000个单词,每个单词20字节长
int wordcount=0;
int wordfreq[1000]= {0}; //每个单词的词频
char line[1000]; //每行最多1000个字母
int wordstart,wordend,ii;
FILE *fp = fopen(文本文件)
while(!feof(fp))
{
scanf(fp,"%s",line); //读取一行
wordstart=0;
for(wordend=wordstart;wordstart<strlen(line) && wordend<strlen(line);wordend++) //查找空格,切分单词
{
if (line[wordend]==' ')
{
line[wordend]=0x00;
for(ii=0; ii<wordcount; ii++) //查找单词是否在word队列中
{
if (!strcmp(word[ii], line[wordstart]) //单词已经存在
{
wordfreq[ii] ++;
break;
}
}
if (ii>=wordcount) //单词不存在
{
strcpy(word[wordcount], line[wordstart], strlen(line[wordstart]);
wordcount++;
}
wordstart = wordend + 1;
}
}
if (wordstart<strlen(line)) //此行最后一个单词
{
line[wordend]=0x00;
for(ii=0; ii<wordcount; ii++) //查找单词是否在word队列中
{
if (!strcmp(word[ii], line[wordstart]) //单词已经存在
{
wordfreq[ii] ++;
break;
}
}
if (ii>=wordcount) //单词不存在
{
strcpy(word[wordcount], line[wordstart], strlen(line[wordstart]);
wordcount++;
}
wordstart = wordend + 1;
}
}

}
fclose(fp);
//此时,word队列中保存了读取的所有单词,wordfreq队列中保存了相应的词频。
//使用排序算法进行排序(代码可以在网上搜)
for(ii=0; ii<wordcount; ii++)
printf(" %s -> %d\n", word[ii], wordfreq[ii]);
return 0;

B. 只用C语言词频统计怎么做不用C++

定义一个结构体,一个是表示词,一个表示词频,然后开始统计
读入的词以空格区分是不是一个词,然后在链表中检索,
要是有匹配的,相应的词频+1,
如果没有匹配的,在链表中加入这个词

C. 用C语言实现英文单词词频统计

你这样存单词也太浪费空间了,你可以把一个单词放到一个变量里。可以这样解决:用一个变量(word)记单词,另一个变量(ch)去接收文章的每个字符,当if(ch>='a'&&ch<='z') &&(ch>='A'&&ch<='Z')word+=ch; else { ch=nextchar();并且这时变量word中就是一个完整的单词了,你是怎么存储你就随意了.};
你在存储是可以记数,当有一定的数量是你可以删除什么的都可以.也可以放到文件里.

D. c语言用链表实现,统计一个英文文本文件中每个单词的出现次数(词频统计),结果按单词词典序输出到屏幕

#include <stdio.h>
#include <string.h>
int main(void)
{
int a = 0, b = 0, c = 0;
char buf[128];
FILE *fp;
/* 打开文件,文件名必须大写 */
fp= fopen("DATA5610.TXT", "r");
if (!fp) {
printf("No 'DATA5610.TXT' found.\n");
return -1;
}
/* 逐次读取单词,空格或回车分割 */
while (fscanf(fp, "%s", buf) > 0) {
/* 如读取到的单词是 if,则a自增 1 */
if (strcmp(buf, "if") == 0)
a++;
else if (strcmp(buf, "while") == 0)
b++;
else if (strcmp(buf, "for") == 0)
c++;
}
printf("if: %d, while: %d, for: %d\n", a, b, c);
fclose(fp);
return 0;
}

E. C语言高分求助 统计词频

“keefo”的答案不错
不过有一个地方可以完善,单词统计,使用定长的数组不好,还是改成链表来存储。
要是单词超过了数组的长度,就会溢出,那可就不好了。
需要的话,一会儿写出来^_^
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const int WORD_LENGTH = 256; //使用const int 比用define要好

struct wordNode
{
char word[WORD_LENGTH]; //存放单词
int iWordCount; //单词出现次数
wordNode *pNext; //结构体的指针
};

wordNode *pHeader = NULL; //链表的头指针

//声明需要的函数
void CountWord(char *current);
wordNode * SearchWord(char *current);
void PrintResult();
void Release();

int main()
{
//临时存放单词的词组
char temp[WORD_LENGTH];

//打开要读取的文件
FILE *fp;
if( NULL == (fp=fopen("123.txt", "r")) ) //把NULL写在前面是一种编程习惯,不用觉得奇怪
{
printf("Open file failed!!\n");
exit(1);
}

//循环读取文本中的内容
while( EOF != (fscanf(fp,"%s",temp)) )
{
CountWord(temp);
}

//关闭文件
fclose(fp);

//输出统计结果
PrintResult();

//释放内存,养成好习惯
Release();

return 0;
}

//单词统计
void CountWord(char *current)
{
wordNode *pNode = NULL;
pNode = SearchWord(current);
if(NULL == pNode)
{
return;
}
else
{
pNode->iWordCount++;
}
}

//查找单词所在节点
wordNode * SearchWord(char *current)
{
//当链表为空的时候,也就统计第一个单词时
if( NULL == pHeader)
{
pHeader = new wordNode;
strcpy(pHeader->word, current);
pHeader->iWordCount = 0;
pHeader->pNext = NULL;
return pHeader;
}

//搜索现有的链表
wordNode *pCurr = pHeader;
wordNode *pPre = NULL;
while( (NULL != pCurr) && (0 != strcmp(pCurr->word, current)) )
{
pPre = pCurr;
pCurr = pCurr->pNext;
}

//该单词不存在
if(NULL == pCurr)
{
pCurr = new wordNode;
strcpy(pCurr->word, current);
pCurr->iWordCount = 0;
pCurr->pNext = NULL;
pPre->pNext = pCurr;
}
return pCurr;
}

//输出结果
void PrintResult()
{
if(NULL == pHeader)
{
printf("No Word!!\n");
}
else
{
wordNode *pCurr = pHeader;
while(NULL != pCurr)
{
printf("%s\t%d\n", pCurr->word, pCurr->iWordCount);
pCurr = pCurr->pNext;
}
}
}

void Release()
{
if(NULL == pHeader)
{
return;
}
wordNode *pCurr = pHeader;
while(NULL != pCurr)
{
pHeader = pCurr->pNext;
delete pCurr;
pCurr = pHeader;
}
}

字母的统计工作,和单词一样,其实更简单一些。

F. c语言问题 统计单词的词频①编写函数void count(char a[],char w[][10

对w进行循环与字符串a比对
比如"is"与a进行比对,找到a中所有有a地方然后判断该位置是否为一个单词是则在对应b中增加数字

如果代码不想自己写的话
我可以有偿代劳

G. 使用C语言编写一个词频(限英文文章)统计程序

不知道你说的意思是从文件中读出 还是直接从屏幕输入单词 下面是我做的直接从屏幕输入单词的一个程序 你可以看看噢
#include <stdio.h>
#include<string.h>
void main()
{
char str[100][26];
const char str1[5]="1234"; const char str2=' ';
int num[100];
int m,k,i,n,x,q;
int max,max1,max2;
double pl;
again:
max=0;max1=0;max2=0;
m=0;k=0;i=0;n=0;x=0;q=0;
pl=0;
for(m=0 ;m<100;m++)
{num[m]=0;
}
for(m=0 ;m<100;m++)
{strcpy( str[m],&str2);
}

printf(" 请输入单词(100个单词以 内 每个不大于25个字符)\n");
printf(" 输入 1234 结束输入 \n");
for(m=0 ;m<100;m++)
{
scanf("%s",str[m]);

if( strcmp(str[m],str1 )==0 )
break;
}
for(i=0 ; i<m;i++)
{
for(k=0; k<m;k++)
{
if(strcmp(str[i],str[k] )==0)
{
num[i]++;
}

}

}
max=num[0];
while(max>=2)
{
max=num[0];max1=0;max2=0;
for(n=0;n<m;n++)
{
if(max<num[n+1])
{
max=num[n+1];
max1=n+1;
}
}
num[max1]=0;
pl=(double)max/m;
printf("%8s",str[max1]);
printf(" 出现%8d次",max);
printf(" 位置 第%8d个 ",max1+1);
printf("频率%8lf\n",pl);

for(n=0;n<m;n++)
{
if(max==num[n+1] && max1!=n+1)
{max2=n+1;
num[max2]=0;
printf("%8s",str[max2]);
printf(" 出现%8d次",max);
printf(" 位置 第%8d个 ",max2+1);
printf("频率%8lf\n",pl);
}
}
printf(" 。第%d位 。\n\n\n",q+1);
q++;

}
printf("重新输入 按 1 其它键退出程序");
scanf("%d",&x);
switch(x)
{case 1:
goto again;
break;
default:
return;

}

}

H. 求统计词频的c语言程序

#include<stdio.h>
#include<string.h>
#define N 100
#define M 100

void main()
{
FILE *fp;
char s[N][M],t[M];
int sn[N];
int n,i,found;

if((fp=fopen("\\a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
exit(0);
}

n=0;
fscanf(fp,"%s",s[0]);
sn[0]=1;
while(!feof(fp))
{
fscanf(fp,"%s",t);
found=0;
for(i=0;i<=n;i++)
if(strcmp(s[i],t)==0)
{
found=1;
sn[i]++;
break;
}
if(!found)
{
n++;
strcpy(s[n],t);
sn[n]=1;
}
}
fclose(fp);

if((fp=fopen("\\b.txt","w"))==NULL)
{
printf("Cannot open the file!\n");
exit(0);
}
for(i=0;i<=n;i++)
{
fprintf(fp,"%s %d\n",s[i],sn[i]);
}
fclose(fp);
}

I. C语言单词词频统计

柱状图 横着显示可以吗?还有txt文件里面只是单词吧
打印效果
shao ***
he ****
这样可以吗,可以我就帮你写

热点内容
物资数据库 发布:2025-01-11 21:00:24 浏览:853
javastop 发布:2025-01-11 21:00:20 浏览:30
机械手臂用什么编程 发布:2025-01-11 20:55:32 浏览:591
买钓箱要哪些配置就够了 发布:2025-01-11 20:24:23 浏览:510
防脚本取色 发布:2025-01-11 20:15:17 浏览:638
为什么庄周活动安卓没开始 发布:2025-01-11 20:14:23 浏览:461
我的世界花雨庭国际服服务器地址 发布:2025-01-11 20:13:27 浏览:719
c数据导入数据库 发布:2025-01-11 20:07:55 浏览:829
可以上传片 发布:2025-01-11 20:07:55 浏览:793
outlook服务器邮件怎么找 发布:2025-01-11 20:06:12 浏览:96