解析:简单的一道题,之所以把它贴出来是因为并不是我一开始想象的那么简单。
要判断单词的数量,很显然可以根据空格的数量来计算,如果是那样则依赖与具体的数据。
即使讨论的再精细,也不能保证绝对的正确。我们不应该利用这种逆向的投机取巧的方法。
要判断单词的个数,那就逐一扫描完整的单词。
代码:
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 }