c++ 给出一个字符串(长度<10000)),统计其中四个字母(b、 m、 p t)出现的次数,并按出现次数降序输出字母和该宇母的出现次数 (不区分大小写),如果两个字母的出现次数一样,则按照字母 升序输出 输入说明: 一个字符串 输出说明: :分4行输出,每个字母一行。格式为字母和出现次数, 以单个空格分隔
时间: 2024-03-12 08:49:32 浏览: 52
好的,这是一个实现了您要求的 C++ 代码:
```c++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct Letter {
char c;
int count;
};
bool cmp(Letter a, Letter b) {
if (a.count == b.count) {
return a.c < b.c;
} else {
return a.count > b.count;
}
}
int main() {
char str[10001];
cin.getline(str, 10001);
int len = strlen(str);
Letter letters[4] = {{'b', 0}, {'m', 0}, {'p', 0}, {'t', 0}};
for (int i = 0; i < len; i++) {
char c = str[i];
if (c == 'B' || c == 'b') {
letters[0].count++;
} else if (c == 'M' || c == 'm') {
letters[1].count++;
} else if (c == 'P' || c == 'p') {
letters[2].count++;
} else if (c == 'T' || c == 't') {
letters[3].count++;
}
}
sort(letters, letters+4, cmp);
for (int i = 0; i < 4; i++) {
cout << letters[i].c << " " << letters[i].count << endl;
}
return 0;
}
```
这段代码和前面的代码几乎一模一样,只是将 "7" 替换成了 "t",并且相应地修改了结构体 Letter 的定义和数组 letters 的初始化。
希望这次能够满足您的需求!
阅读全文