如何用C语言实现读取句子然后计算单词个数,当遇到Stop单词时停止读取且Stop不计算在单词个数里

更新时间:02-02 教程 由 颜若惜 分享

要使用C语言来计算单词数量其实方法也非常简单,我就简单的说一下原理吧。

以下面这个句子为例:

"Wewon't,Mother,"saidGruffoandMuffo."We'lltakegoodcareofDido."

我们能够发现,一个英语的句子除了标点符号外,每个单词之间都是有空格的,除了'这个标点符号。而针对'这个符号,我们会出现两种情况,一种是won't和we'll认为是一个单词;另一种是won't认为是willnot,we'll认为是wewill,也就是两个单词。

这里,我们先默认使用第一种,也就是won't是一个单词。这样的话,先去掉除了'以外的所有标点符号,包括,.!?":()等等。

C语言我也不是很熟,去掉字符串中指定字符的代码我就随便贴了一个:

#include

#include

voiddeletechar(chara[],charc)
{
inti,j;
for(i=0,j=0;*(a+i)!='\0';i++)
{
if(*(a+i)==c)
continue;
else
{
*(a+j)=*(a+i);
j++;
}
}
*(a+j)='\0';
}

intmain()
{
chara[100],c;
scanf("%s%c",a,&c);
deletechar(a,c);
printf("%s",a);
return0;
}

OK,去掉这些标点以后,上面的那个句子就会变成这样。

Wewon'tMothersaidGruffoandMuffoWe'lltakegoodcareofDido

这个时候,我们就通过空格,把字符串变成一个个单词组成的数组。这时候就简单了,遍历这个数组,如果单词不是Stop,那么单词的数量就+1,如果是Stop,那么就停止并且返回当前以及累加的单词数。

使用特定字符分割字符串的代码我就不去贴了,也不难,随便百度一下就能找到。

那么假设我们需要考虑'符号,也就是说,won't是两个单词,我们怎么办呢?

其实也简单,就是我们在遍历单词的时候去判断一下这个单词里面是不是有'符号,如果有,就+2,如果没有就+1。

当然,在英文的文章里面可能不一定全部如此简单,可能还有-符号的存在。而-其实是一种连接符,并没有任何意义,是可以去掉的,因此可以在最初删除字符的时候一并删除了。

大概的思路就是这样了,希望对你有点用处。

声明:关于《如何用C语言实现读取句子然后计算单词个数,当遇到Stop单词时停止读取且Stop不计算在单词个数里》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2166748.html