思路:
从末尾思考,一个单词结束以后一定会接一个非字母(空格、符号等)。所以有一个英文字母的下一个字符为非字母,则代表一个单词的结束。
准备:
能执行c语言的环境
代码:
int countWords(const char* sentence)
{
int count = 0,i=0;
while(sentence[++i] != ' ')
if(sentence[i] <= 'z' && sentence[i] >= 'a' &&
(sentence[i + 1] < 'a' || sentence[i + 1] > 'z'))//字母且下一个不是字母
count++;
return count;
}
PS:
这个函数不适用于太小(2个字符及以下)和末尾没有' '的字符串。不过既然都要求句子的单词数量了,为什么要选择太小的字符串呢?
并且这并不是真正求单词的函数,而是求连续小写字母块的数量,并且还不包含其他特殊情况(比如德语的öäüß字母)。如果真要求单词,可以在计数增加(count++)那里加个单词比对的功能



