#include<iostream>#include<string>#include<map>
using namespace std;
map<string,int> words;int total =0;voidprintk(void){staticint flag =0;if(flag) cout << endl;else flag =1;}voidpushword(string &word,int&cnt){if(words[word]==0){
total++;
words[word]=1;}else{
words[word]++;}
word ="";
cnt =0;}intmain(){
string str, word;
string m;int cnt =0;int max;while(cin >> str){for(int i =0; i < str.length(); i++){if(str[i]=='#'){if(cnt >0)pushword(word, cnt);
cout << total << endl;int final = total /10;for(int i =0; i < final; i++){
max =0;for(auto it : words){if(it.second > max){
max = it.second;
m = it.first;}}printk();
cout << max <<":"<< m;
words.erase(m);}return0;}if(cnt ==15){// abc...(15)...abc# abc...(15)...abc,abcpushword(word,cnt);break;}if(str[i]>='A'&&str[i]<='Z'){
word +=(str[i]+32);
cnt++;}elseif((str[i]>='a'&&str[i]<='z')||(str[i]>='0'&&str[i]<='9')|| str[i]=='_'){
word += str[i];
cnt++;}else{if(cnt>0)pushword(word,cnt);continue;}if(i == str.length()-1&& cnt >0)pushword(word, cnt);}}return0;}
习题5.13-词频统计-编程题解题代码测试结果问题整理解题代码#include<iostream>#include<string>#include<map>using namespace std;map<string, int> words;int total = 0;void printk(void) { static int flag = 0; if (flag) cout << endl; else flag = 1;