解析:简单的一道题,之所以把它贴出来是因为并不是我一开始想象的那么简单。

   要判断单词的数量,很显然可以根据空格的数量来计算,如果是那样则依赖与具体的数据。

   即使讨论的再精细,也不能保证绝对的正确。我们不应该利用这种逆向的投机取巧的方法。

   要判断单词的个数,那就逐一扫描完整的单词。

代码:

 1 #include <iostream>
 2 using namespace std;
 3 int is_word(char ch);
 4 int main()
 5 {
 6     char s[10000];
 7     int i,words;
 8     while(cin.getline(s,10000)){
 9         words = 0;
10         for(i = 0; s[i] ; i++){
11             //任何一个单词都有入界点
12             //开始的s[i]为单词的入界点
13             if(is_word(s[i])){
14                 while(s[i+1]&&is_word(s[i+1]))
15                     i++;
16                 i++;
17                 words++;
18             }
19             //最终的s[i]为单词的出界点
20             //任何一个单词都有出界点
21             if(s[i] == '\0')   //防止出界
22                 break;
23         }
24         cout<<words<<endl;
25     }
26     return 0;
27 }
28 int is_word(char s)
29 {
30     if((s>='a'&&s<='z')||(s>='A'&&s<='Z'))
31         return 1;
32     return 0;
33 }