C语言中输入一个字符串,输出的顺序按照输入字符串的元素从多到少排序,相同的排序则按照ascii码排序,C语言代码的实现
时间: 2024-02-16 14:00:08 浏览: 105
字符串的操作,输入以字符串,然后排序
好的,这里是一段 C 语言的代码,可以实现输入一个字符串,按照输入字符串的元素从多到少排序,相同的排序则按照 ASCII 码排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN], temp;
int count[MAX_LEN] = {0};
int i, j, k, n;
printf("请输入字符串:");
scanf("%s", str);
n = strlen(str);
for (i = 0; i < n; i++) {
count[i] = 1; // 初始化计数器
for (j = i+1; j < n; j++) {
if (str[i] == str[j]) {
count[i]++; // 计数器加一
for (k = j; k < n; k++) {
str[k] = str[k+1]; // 将字符串中相同的字符删除
}
n--; // 字符串长度减一
j--; // 让循环变量 j 保持不变
}
}
}
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (count[j] < count[j+1] || (count[j] == count[j+1] && str[j] < str[j+1])) {
// 交换字符
temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
// 交换计数器
k = count[j];
count[j] = count[j+1];
count[j+1] = k;
}
}
}
printf("按照字符出现次数从多到少排序:\n");
for (i = 0; i < n; i++) {
printf("%c:%d\n", str[i], count[i]);
}
return 0;
}
```
在这段代码中,我们首先定义了一个字符数组 `str`,用来存储输入的字符串;另外还定义了一个一维整型数组 `count`,用来存储每个字符在字符串中出现的次数。然后通过双重循环进行冒泡排序,排序的依据是字符在字符串中出现的次数,如果次数相同,则按照 ASCII 码排序。排序完成后,按照排序结果输出字符和出现次数即可。
阅读全文