/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 2020-03-21 /输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。 */ #include <iostream> using namespace std; /* 函数接口1:统计出英文字母字符的个数。 @param str 需要输入的字符串 @return 英文字母字符的个数 */ int getEnglishCharCount(string str) { int count = 0; //计数器,记录英文字符的个数 for (int i = 0; i < str.size(); i++) { if (((str[i] >= 'A') && (str[i] <= 'Z')) || ((str[i] >= 'a') && (str[i] <= 'z'))) { count++; } } return count; } /* 函数接口2:统计出空格字符的个数。 @param str 需要输入的字符串 @return 空格字符的个数 */ int getBlankCharCount(string str) { int count = 0; //计数器,记录空格字符的个数 for (int i = 0; i < str.size(); i++) { if (str[i] == ' ') { count++; } } return count; } /* 函数接口3:统计出数字字符的个数。 @param str 需要输入的字符串 @return 数字字符的个数 */ int getNumberCharCount(string str) { int count = 0; //计数器,记录数字字符的个数 for (int i = 0; i < str.size(); i++) { if ((str[i] >= '0') && (str[i] <= '9')) { count++; } } return count; } /* 函数接口4:统计出其它字符的个数。 @param str 需要输入的字符串 @return 其他字符的个数 */ int getOtherCharCount(string str) { //ASCII 码:最小边界值 0;空格:32;数字:48~57;英文字母:大写 65~90,小写 97~122;最大边界值 127。故对应写出五个区间即可判断其他字符 int count = 0; //计数器,记录其他字符的个数 for (int i = 0; i < str.size(); i++) { if (((str[i] >= 0) && (str[i] < ' ')) || ((str[i] > ' ') && (str[i] < '0')) || ((str[i] > '9') && (str[i] < 'A')) || ((str[i] > 'Z') && (str[i] < 'a')) || ((str[i] > 'z') && (str[i] <= 127))) { count++; } } return count; } //主函数 int main() { string str; while (getline(cin, str)) { cout << getEnglishCharCount(str) << '\n' << getBlankCharCount(str) << '\n' << getNumberCharCount(str) << '\n' << getOtherCharCount(str) << endl; } return 0; }