用冒泡排序法对输入的二十个数进行降序排序并存入数组中,然后再输入一个数插入该数组中,要求保持原序不变并输出该数组的二十一个数 C语言 数组 char
时间: 2024-03-13 07:46:39 浏览: 97
有序整型数组,插入一个动态输入整数,保证插入后依然有序。(利用冒泡排序)
好的,类似于之前的代码,我们可以使用冒泡排序法对输入的二十个字符进行降序排序。排序的方法和之前的整型数组是一样的,只需将变量类型换成 `char` 即可。
然后再输入一个字符,插入到排好序的字符数组中。同样地,我们需要从后往前遍历数组,找到第一个小于等于当前字符的位置,并将它插入到该位置的后面。
下面是代码实现:
```c
#include <stdio.h>
void bubbleSort(char arr[], int n) {
int i, j;
char temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
char arr[20], ch;
int i, pos;
printf("请输入20个字符:\n");
for (i = 0; i < 20; i++) {
scanf("%c", &arr[i]);
getchar(); // 读取多余的回车符
}
bubbleSort(arr, 20);
printf("排序后的数组为:\n");
for (i = 0; i < 20; i++) {
printf("%c ", arr[i]);
}
printf("\n请输入要插入的字符:\n");
scanf("%c", &ch);
getchar(); // 读取多余的回车符
for (i = 19; i >= 0; i--) {
if (arr[i] > ch) {
arr[i + 1] = arr[i];
} else {
break;
}
}
arr[i + 1] = ch;
printf("插入后的数组为:\n");
for (i = 0; i < 21; i++) {
printf("%c ", arr[i]);
}
return 0;
}
```
这段代码中,我们首先定义了一个 `bubbleSort` 函数来实现冒泡排序。然后在 `main` 函数中,我们输入二十个字符,并调用 `bubbleSort` 函数对它们进行降序排序。然后再输入一个字符 `ch`,并将它插入到已排序的数组中。为了保持原序不变,我们需要从后往前遍历数组,找到第一个小于等于 `ch` 的字符,并将 `ch` 插入到它的后面。最后输出排序后的数组和插入后的数组,共二十一个字符。
需要注意的是,由于 `scanf` 函数会读取回车符,导致数组中出现多余的回车符,因此我们需要在输入字符后再加上一个 `getchar` 函数来读取多余的回车符。
如果还有其他问题,可以继续向我提问哦!
阅读全文