用python统计单词出现的次数并输出前五个_编写一个程序。功能是读入一篇英文文章,统计该文章中每个单词的出现次数,并输出出现次数最多的前5个单词...

这篇博客介绍了一个使用Python实现的程序,旨在读取英文文章,统计每个单词出现的次数,并打印出现次数最多的前五个单词。程序通过处理文本,将单词转为小写,然后进行计数和排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

刚用C语言写的,功能实现,但有32313133353236313431303231363533e4b893e5b19e31333332393363很多可以优化的地方,自己改吧,不明白的追问:

#include 

#include 

//能统计的最大单词个数,可以自己改

#define MAX_WORD_COUNT 500

//结构体,保存每个单词及对应的个数

typedef struct WordCount

{

char cWord[20];

int  iCount;

}T_WordCount;

int CalcEachWord(const char *pText);//计算单词个数及输出信息等

void LowerText(char *pText);//把单词变成小写形式

void SwapItem(T_WordCount *ItemA, T_WordCount * ItemB);//交换两个元素

void SortWord(T_WordCount *pWordSet);//排序

int main(int argc, char *argv[])

{

//测试文本

char pText[] ="Text HAs HAS ONE h-as MOrE Has MORE ha-S BLANk more blank or more oR blank  Between   wor-ds.";

printf("The text is :\n");

printf("----------------------------------\n");

printf("%s\n", pText);

printf("----------------------------------\n");

printf("The top 5 words is :\n");

CalcEachWord(pText); return 0;

}

int CalcEachWord(const char *pText)

{

char cTmp[20] = {0};

int  i   = 0;

char *pTmp   = cTmp;

int  iFlag   = 0;

T_WordCount tWordSet[MAX_WORD_COUNT];

memset(tWordSet, 0, sizeof(tWordSet));

while (*pText != '\0')

{

if ((*pText >= 'A' && *pText <= 'Z') || (*pText >= 'a' && *pText <= 'z'))

{

*pTmp = *pText;

pTmp++;

}

else if (*pText == '-')

{

++pText;

continue;

}

else

{

if (strlen(cTmp) > 0)

{

LowerText(cTmp);

iFlag = 0;

for (i = 0; i 

{

if (strlen(tWordSet[i].cWord) > 0)

{

if (strcmp(tWordSet[i].cWord, cTmp) == 0)

{

iFlag = 1;

tWordSet[i].iCount++;

break;

}

}

else

{

strcpy(tWordSet[i].cWord, cTmp);

tWordSet[i].iCount = 1;

iFlag = 1;

break;

}

}

if (!iFlag)

{

printf("No more space to save word.\n");

}

}

memset(cTmp, 0, 20);

pTmp = cTmp;

}

++pText;

}

//排序 SortWord(tWordSet);

for (i = 0; i 

{

if (strlen(tWordSet[i].cWord) > 0)

{

printf("%s:%d\n",tWordSet[i].cWord,tWordSet[i].iCount);

}

}

return 0;

}

void LowerText(char *pText)

{

char *pTmp = pText;

while (*pTmp != '\0')

{

if ((*pTmp >= 'A' && *pTmp <= 'Z'))

{

*pTmp += 32 ;

}

pTmp++; }

}

void SwapItem(T_WordCount *ItemA, T_WordCount * ItemB)

{

T_WordCount Tmp;

memset(&Tmp, 0, sizeof(T_WordCount));

strcpy(Tmp.cWord, ItemA->cWord);

Tmp.iCount = ItemA->iCount;

strcpy(ItemA->cWord, ItemB->cWord); ItemA->iCount = ItemB->iCount;

strcpy(ItemB->cWord, Tmp.cWord); ItemB->iCount = Tmp.iCount;

}

//冒泡排序算法

void SortWord(T_WordCount *pWordSet){

int i,j;

for (j = 0; j 

{

for (i = 0; i 

{

if (pWordSet[i].iCount 

{

SwapItem(&pWordSet[i], &pWordSet[i+1]);

}

}

}

}

测试结果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值