要使用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。
当然,在英文的文章里面可能不一定全部如此简单,可能还有-符号的存在。而-其实是一种连接符,并没有任何意义,是可以去掉的,因此可以在最初删除字符的时候一并删除了。
大概的思路就是这样了,希望对你有点用处。