编写一个程序,接收用户输入的一个字符串(可以包含空格),统计其中所有出现过的所有字符,并按照频率高低的顺序排列输出。频率相同的字符按输入顺序输出。
时间: 2024-05-02 21:20:36 浏览: 64
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
好的,这个问题属于技术问题,我可以为您回答。您可以参考以下代码实现:
```
#include <stdio.h>
#include <string.h>
const int MAX = 1000;
int main() {
char str[MAX], freq[MAX];
int count[MAX] = {0};
int len, i, j, k, max, index;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for(i = 0, j = 0; i < len; i++) {
for(k = 0; k < j; k++) {
if(str[i] == freq[k]) {
count[k]++;
break;
}
}
if(k == j) {
freq[j] = str[i];
count[j]++;
j++;
}
}
for(i = 0; i < j; i++) {
max = 0;
for(k = i; k < j; k++) {
if(count[k] > count[max]) {
max = k;
}
}
if(i != max) {
index = count[i];
count[i] = count[max];
count[max] = index;
freq[i] = freq[max];
freq[max] = index;
}
printf("%c:%d ", freq[i], count[i]);
}
printf("\n");
return 0;
}
```
这个程序会接收用户输入的字符串,统计其中所有出现过的字符,并按照频率高低的顺序排列输出,频率相同的字符按输入顺序输出。
阅读全文