提交时间:2023-12-25 19:50:14

运行 ID: 35034

//1.读入文章,放到字符串中 //2.统计文章中26个字母出现的次数(不分大小写) //3.按照出现的次数排序(从高往低排序) //4.输出 #include<bits/stdc++.h> using namespace std; int cnt[26]; int main() { string s; getline(cin, s); //要把字母找出来统计,大写,小写 'A' 'a' int len = s.size();//字符串的长度 for (int i = 0; i < len; i++) { //s[i] 是字母 ,可能出现其他的字符 if(s[i] >= 'a' && s[i] <= 'z') { s[i] = s[i] - 32;//小写字母转换为大写字母 int x = s[i] - 'A'; cnt[x]++; //统计字母出现的次数 }else if(s[i] >= 'A' && s[i] <= 'Z') { int x = s[i] - 'A'; cnt[x]++; //统计字母出现的次数 } } char ch[26], c = 'A'; for (int i = 0; i < 26; i++) { ch[i] = c; c++; } //冒泡排序:从大到小排序 for (int tang = 1; tang < 26; tang++) { //一趟的两两比较 for (int wei = 0; wei < 25 ; wei++) { if(cnt[wei] < cnt[wei + 1]) { swap(cnt[wei], cnt[wei + 1]);//交换次数 swap(ch[wei], ch[wei + 1]);//交换字母 } } } //输出 for (int i = 0; i < 26; i++) { cout << i + 1 <<" " <<ch[i] <<": " << cnt[i] << endl; } return 0; }