欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

句子成分分析(C++)

发布时间:2023/12/20 c/c++ 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 句子成分分析(C++) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

从键盘输入n个英文句子(“.”、“?”和“!”表示结束),每次输入一句,分别统计输出每个句子的大写字母个数、小写字母个数、数字个数、空格个数和其他字符个数,最后输出全部句子的统计结果。

题目:

从键盘输入n个英文句子(“.”、“?”和“!”表示结束),每次输入一句,分别统计输出每个句子的大写字母个数、小写字母个数、数字个数、空格个数和其他字符个数,最后输出全部句子的统计结果。

  • 每个句子不知道有多长,所以不适合用char []型存储,所以可以选择用string;
  • 由于不知道会输入多少个句子,所以可以选择动态数组vector来存储每个string;
  • 判断字符类型可以用库函数:<cctype>
  • 各种句子成分类型可以写在一个结构体内;

具体代码如下:

#include <iostream> #include <vector> #include <cctype> #include <string> using std::cin; using std::cout; using std::endl; using std::string; void analyse(string & ); struct component {int uppercase;int lowercase;int digit;int space; int other; }cp; int main() {cout << "请输入几个句子,每个句子以“.”,“?”或“!”结尾,以一个'.'作为最后一个句子。" << endl;std::vector<string> sentences;char ch=' ';string str("");while(str != "."){str.erase(str.begin(),str.end());ch = ' ';while(ch!='.' && ch!='?' && ch!='!'){cin.get(ch);if (ch == '.' || ch == '?' || ch == '!')cin.get();str += ch;}sentences.push_back(str);}for (decltype(sentences.size()) i = 0; i < sentences.size(); i++){if (i == sentences.size()-1)cout << endl << "总句子分析:" << endl;elsecout << endl << "第" << i + 1 << "个句子分析:" << endl;analyse(sentences[i]);}cout << "bye!";system("pause");return 0; } void analyse(string & str) { static component sum_cpn={0};if (str=="."){cout << "总小写字母数:" << sum_cpn.lowercase << endl<< "总大写字母数:" << sum_cpn.uppercase << endl<< "总数字数:" << sum_cpn.digit << endl<< "总空格数:" << sum_cpn.space << endl<< "总其他字符数:" << sum_cpn.other << endl;return;}component cpn={0,0,0,0,0};for (decltype(str.size()) i = 0; i < str.size(); i++){if (isupper(str[i])){cpn.uppercase++;sum_cpn.uppercase++;} else if (islower(str[i])){cpn.lowercase++;sum_cpn.lowercase++;}else if (isdigit(str[i])){cpn.digit++;sum_cpn.digit++;}else if (isspace(str[i])){cpn.space++;sum_cpn.space++;}else{cpn.other++;sum_cpn.other++;}}cout << "小写字母数:" << cpn.lowercase << endl<< "大写字母数:" << cpn.uppercase << endl<< "数字数:" << cpn.digit << endl<< "空格数:" << cpn.space << endl<< "其他字符数:" << cpn.other << endl; }

总结

以上是生活随笔为你收集整理的句子成分分析(C++)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。