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

Python019

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

对w进行循环与字符串a比对

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

如果代码不想自己写的话

我可以有偿代劳

1、统计英文文本中单词个数。

if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) sum++

2、统计某一特定单词出现的频度。

for(i=0i!='/0'i++)

{

if(a[i]=='特定单词')

sum++

}

扩展资料:

if语句的一般形式如下:

if(表达式)语句1

[else语句2]

if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。

for循环小括号里第一个“”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值。

参考资料来源:百度百科-for循环

参考资料来源:百度百科-if语句

思路示意:

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=wordstartwordstart<strlen(line) &&wordend<strlen(line)wordend++) //查找空格,切分单词

{

if (line[wordend]==' ')

{

line[wordend]=0x00

for(ii=0ii<wordcountii++) //查找单词是否在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=0ii<wordcountii++) //查找单词是否在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=0ii<wordcountii++)

printf(" %s -> %d\n", word[ii], wordfreq[ii])

return 0