华中科技大学考研机试题 [3615. 单词个数统计] stringstream
作者:
xianhai
,
2021-12-06 11:26:43
,
所有人可见
,
阅读 321
利用C++中的 getline(cin, string);
#include <iostream>
#include <sstream>
using namespace std;
int nums[26];
int main() {
string str;
getline(cin, str);
stringstream ssin(str);
// 统计字母个数、单词个数
int num_letter = 0, num_word = 0, size = 0;
string s;
while (ssin >> s) {
// cout << s << endl;
size = s.size();
num_letter += size;
num_word++;
for (int i = 0; i < size; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
nums[s[i] - 'A']++;
}
if (s[i] >= 'a' && s[i] <= 'z') {
nums[s[i] - 'a']++;
}
}
}
// 第一行输出此句子中英文字母的个数
cout << num_letter << endl;
// 第二行输出此句子中单词的个数
cout << num_word << endl;
// 统计最多的次数
int num_times = 0;
for (int i = 0; i < 26; i++) {
if (nums[i] > num_times) {
num_times = nums[i];
}
}
// 第三行输出出现最多的字母
for (int i = 0; i < 26; i++) {
if (num_times == nums[i]) {
cout << (char)('a' + i) << ' ';
}
}
puts("");
// 第四行出现最多的字母的出现次数
cout << num_times << endl;
return 0;
}
利用 cin.getline(s, N);
#include <iostream>
#include <sstream>
using namespace std;
const int N = 1005;
int nums[26];
char s[N];
int main() {
string str;
cin.getline(s, N);
// printf("%s\n", s);
// 统计字母个数、单词个数
int num_letter = 0, num_word = 1, size = 0;
for (int i = 0; s[i]; i++) {
if (s[i] != ' ') {
num_letter++;
}
if (s[i] >= 'A' && s[i] <= 'Z') {
nums[s[i] - 'A']++;
}
if (s[i] >= 'a' && s[i] <= 'z') {
nums[s[i] - 'a']++;
}
if (s[i] == ' ' && s[i + 1] != ' ') {
num_word++;
}
}
// 第一行输出此句子中英文字母的个数
cout << num_letter << endl;
// 第二行输出此句子中单词的个数
cout << num_word << endl;
// 统计最多的次数
int num_times = 0;
for (int i = 0; i < 26; i++) {
if (nums[i] > num_times) {
num_times = nums[i];
}
}
// 第三行输出出现最多的字母
for (int i = 0; i < 26; i++) {
if (num_times == nums[i]) {
cout << (char)('a' + i) << ' ';
}
}
puts("");
// 第四行出现最多的字母的出现次数
cout << num_times << endl;
return 0;
}
http://www.cplusplus.com/reference/string/string/getline/
http://www.cplusplus.com/reference/istream/istream/getline/?kw=cin.getline