要求:
有一段文本,统计其中的单词数。例如:
As a technology , "HailStorm" is so new that it is still only known by its code name.
注意:单词间的间隔不一定是一个空格。
分析:
用两个while循环和一个判断字符是否为字母的逻辑。
主循环:找到单词开头、文本结束位置。次循环:找到单词结束位置。
代码如下:
#include <iostream>
using namespace std;
bool isLetter(char c) { // 也可以用标准库<cctype>里的isalpha()函数
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}
int main()
{
char text[] = "As a technology , \"HailStorm\" is so new that it is still only known by its code name.";
int count = 0;
int i = 0;
while (text[i] != '\0') {
if (isLetter(text[i])) { // 找到单词的开头
count++;
do {
i++;
} while (isLetter(text[i])); // 次循环结束时i为单词结束字母的下一位置
}
else i++; // 非字母字符,跳过
}
cout <<"该文本中的单词数:" << count << endl;
return 0;
}