user-0 提问: 老师布置的一道C语言题目不是太会做，请教大佬

回复:
user: user-1
content: 刚学C语言，上面的代码确实难为你了，看这个吧，上面那些就不看了.  #include <stdio.h> #include <conio.h> int main() { 	char ch;//字符获取 	int big = 0, small = 0;//统计 	do { 		ch = getchar();//获取首字母 		if (ch >= 'A'&&ch <= 'Z')//判断首字母是否大写 			++big; 		else 			++small; 		while ((ch = getchar()) != ' ' && ch != '\n');//判断完词首后，这里来读取掉剩余的单词，直至遇到空格或者回车结束 	} while (ch != '\n');//如果不是遇到回车就继续读取下一个单词词首 	printf("词首是大写单词的个数:%d", big);//统计完毕，开始输出 	printf("词首是小写单词的个数:%d", small); }

user: user-0
content: 引用 5 楼 白浅星的回复:刚学C语言，上面的代码确实难为你了，看这个吧，上面那些就不看了.  #include <stdio.h> #include <conio.h> int main() { 	char ch;//字符获取 	int big = 0, small = 0;//统计 	do { 		ch = getchar();//获取首字母 		if (ch >= 'A'&&ch <= 'Z')//判断首字母是否大写 			++big; 		else 			++small; 		while ((ch = getchar()) != ' ' && ch != '\n');//判断完词首后，这里来读取掉剩余的单词，直至遇到空格或者回车结束 	} while (ch != '\n');//如果不是遇到回车就继续读取下一个单词词首 	printf("词首是大写单词的个数:%d", big);//统计完毕，开始输出 	printf("词首是小写单词的个数:%d", small); }  非常感谢大佬

user: user-2
content: 有穷自动状态机  void main() {     // 连续多个空格视为一个；数字不在统计内，“，”等符号不作为分割符     TCHAR * szString = _T("Hello world aabbc Hehe haha 783279 abc,ere              afdsewre");     int state = 1;     int UpperWordsNumb = 0;     int LowerWordsNumb = 0;     for( LPCTSTR pStr = szString; *pStr != _T('\0'); ++pStr )     {           switch( state )           {            case 1:                    if( *pStr >= _T('A') && *pStr <= _T('Z')                    {                            ++UpperWordsNumb;                            state = 2;                    }                    else if( *pStr >= _T('a') && *pStr <= _T('z'))                    {                            ++LowerWordsNumb;                            state = 2;                    }                    break;             case 2:                      if( *pStr == _T(' ') || *pStr == _T('\t') || * pStr == _T('\r') || *pStr == _T('\n'))                           state = 1;                      break;           }     }      printf(_T("大写单词个数：%d\r\n小写单词个数：%d", UpperWordsNumb, LowerWordsNumb )); }

user: user-0
content: 引用 1 楼 user-3的回复:#include <iostream> #include <boost/tokenizer.hpp> #include<cctype> int main() { 	int numUpper{ 0 }; 	int numLower{ 0 };  	std::string s = "Boost C++ libraries hello 234 World"; 	boost::char_separator<char> sep(" "); 	boost::tokenizer<boost::char_separator<char> > tok(s, sep); 	for (auto it = tok.begin(); it != tok.end(); ++it) { 		auto firstChar = (*it)[0]; 		if (isupper(firstChar)) 			numUpper++; 		else if (islower(firstChar)) 			numLower++; 	} 	std::cout << "大写单词个数：" << numUpper << std::endl; 	std::cout << "小写单词个数：" << numLower << std::endl; 	//大写单词个数：3 	//小写单词个数：2 	system("pause"); } 大佬  还有比较简单一点的吗，我们才开始学C语言没多久，这些结构还没学到

user: user-3
content: #include <iostream> #include <boost/tokenizer.hpp> #include<cctype> int main() { 	int numUpper{ 0 }; 	int numLower{ 0 };  	std::string s = "Boost C++ libraries hello 234 World"; 	boost::char_separator<char> sep(" "); 	boost::tokenizer<boost::char_separator<char> > tok(s, sep); 	for (auto it = tok.begin(); it != tok.end(); ++it) { 		auto firstChar = (*it)[0]; 		if (isupper(firstChar)) 			numUpper++; 		else if (islower(firstChar)) 			numLower++; 	} 	std::cout << "大写单词个数：" << numUpper << std::endl; 	std::cout << "小写单词个数：" << numLower << std::endl; 	//大写单词个数：3 	//小写单词个数：2 	system("pause"); }