输入一个可能含空格的字符串(其长度不超过81),分别统计其中26个英文字母出现的次数(不区分大、小写字母),并按字母出现的次数,从高到低进行排序。若次数相同,按字母顺序排列。字母输出格式举例,例如:A-3,表示字母A出现3次,C-0表示字母C没有出现过。输入: 第一行为输入,占一行 输出: 第二行为输出,占一行。按照字母输出格式从高到低输出,各字母输出之间用一个空格字符进行分隔。 样例: 123abcAABXxwvUu+ A-3 B-2 U-2 X-2 C-1 V-1 W-1 D-0 E-0 F-0 G-0 H-01-0J-0 K-0 L-0 M-0 N-0 0-0 P-0 Q-0 R-0 -0 T-0Y-0Z-0
时间: 2023-12-06 15:04:53 浏览: 158
输入一行字符,分别统计出其中的英文字母、空格、数字、和其他字符个数
好的,下面是一个实现该功能的C语言程序:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[82];
int count[26] = {0};
fgets(str, 82, stdin);
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (isalpha(str[i])) {
count[toupper(str[i]) - 'A']++;
}
}
// 冒泡排序
for (int i = 0; i < 25; i++) {
for (int j = i + 1; j < 26; j++) {
if (count[i] < count[j] || (count[i] == count[j] && i < j)) {
int temp = count[i];
count[i] = count[j];
count[j] = temp;
}
}
}
// 输出结果
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c-%d ", i + 'A', count[i]);
}
}
for (int i = 0; i < 26; i++) {
if (count[i] == 0) {
printf("%c-%d ", i + 'A', count[i]);
}
}
return 0;
}
```
这个程序会让用户输入一个字符串,然后统计其中26个英文字母出现的次数,并按照出现次数从高到低排序。如果次数相同,按照字母顺序排序。最后输出每个字母出现的次数。
阅读全文