运行结果:
Enter a string: For example, the input
4 words
1 a
3 e
1 f
1 h
1 i
1 l
1 m
1 n
1 o
2 p
1 r
2 t
1 u
1 x
countWords.cpp
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int computeWords(const string& str);
void countOccurs(const string& str, int a[]);
void show(const string& str, const int a[], int LEN);
int main() {
const int LETTER = 26;
int a[LETTER] = {0};
string str;
cout << "Enter a string: ";
getline(cin, str);
int words = computeWords(str);
countOccurs(str, a);
cout << words << " words\n";
show(str, a, LETTER);
return 0;
}
int computeWords(const string& str) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (isalpha(str[i]) && (! isalpha(str[i +1])))
count++;
}
return count;
}
void countOccurs(const string& str, int a[]) {
for (int i = 0; i < str.length(); i++) {
if (isupper(str[i]))
a[str[i] - 'A']++;
else if (islower(str[i]))
a[str[i] - 'a']++;
}
}
void show(const string& str, const int a[], int LEN) {
char letters = 'a';
for (int i = 0; i < LEN; i++) {
if (a[i] != 0)
cout << a[i] << ' ' << letters << "\n";
letters++;
}
}