在c语言中用冒泡排序法对输入的20个数进行降序排序并存入数组中,然后再输入一个数插入到该数组中,要求保持原序不变并输出该数组的21个数。
时间: 2024-05-13 19:19:40 浏览: 203
下面是用C语言实现的代码:
```c
#include <stdio.h>
#define NUM 21 // 数组的元素个数
void bubbleSort(int arr[], int n); // 冒泡排序
void printArr(int arr[], int n); // 输出数组
void insertElement(int arr[], int n, int x); // 插入元素
int main()
{
int arr[NUM] = {0}; // 初始化数组
int n = NUM - 1; // 原始数组元素个数
int x; // 插入的元素
// 输入20个数
printf("请输入20个数:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubbleSort(arr, n); // 对数组进行降序排序
printf("排序后的数组为:\n");
printArr(arr, n); // 输出排序后的数组
// 输入要插入的元素
printf("请输入要插入的元素:\n");
scanf("%d", &x);
insertElement(arr, n, x); // 插入元素
n++; // 数组元素个数加1
printf("插入后的数组为:\n");
printArr(arr, n); // 输出插入后的数组
return 0;
}
// 冒泡排序
void bubbleSort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) { // 降序排序
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 输出数组
void printArr(int arr[], int n)
{
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// 插入元素
void insertElement(int arr[], int n, int x)
{
int i = n - 1;
while (i >= 0 && arr[i] < x) { // 找到插入位置
arr[i + 1] = arr[i];
i--;
}
arr[i + 1] = x; // 插入元素
}
```
运行程序后,输出结果如下:
```
请输入20个数:
23 45 12 67 89 34 56 78 90 98 76 54 32 10 11 22 33 44 55 66
排序后的数组为:
98 90 89 78 76 67 66 56 55 54 45 44 34 33 32 23 22 12 11 10
请输入要插入的元素:
88
插入后的数组为:
98 90 89 88 78 76 67 66 56 55 54 45 44 34 33 32 23 22 12 11 10
```
阅读全文