用C语言编写一个程序输入两个包含10个元素的数组,先将第一个数组采用冒泡排序法进行降序排列,第二个数组采用选择排序进行降序排列,然后将这两个数组合并成一个降序数组
时间: 2024-05-01 09:17:58 浏览: 12
好的,我能够理解您的问题。以下是C语言程序的代码:
```
#include <stdio.h>
// 冒泡排序函数
void bubbleSort(int arr[], int n) {
int temp;
for (int i = 0; i < n-1; i++) {
for (int 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;
}
}
}
}
// 选择排序函数
void selectionSort(int arr[], int n) {
int max_index, temp;
for (int i = 0; i < n-1; i++) {
max_index = i;
for (int j = i+1; j < n; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
}
// 合并两个数组函数
void mergeArrays(int arr1[], int arr2[], int n, int merged[]) {
int i = 0, j = 0, k = 0;
while (i < n && j < n) {
if (arr1[i] >= arr2[j]) {
merged[k++] = arr1[i++];
} else {
merged[k++] = arr2[j++];
}
}
while (i < n) {
merged[k++] = arr1[i++];
}
while (j < n) {
merged[k++] = arr2[j++];
}
}
int main() {
int arr1[10], arr2[10], merged[20];
int n = 10;
// 接收第一个数组的输入
for (int i = 0; i < n; i++) {
printf("请输入第一个数组的第%d个元素: ", i+1);
scanf("%d", &arr1[i]);
}
// 接收第二个数组的输入
for (int i = 0; i < n; i++) {
printf("请输入第二个数组的第%d个元素: ", i+1);
scanf("%d", &arr2[i]);
}
// 对第一个数组进行冒泡排序
bubbleSort(arr1, n);
// 对第二个数组进行选择排序
selectionSort(arr2, n);
// 合并两个数组
mergeArrays(arr1, arr2, n, merged);
// 输出合并后的数组
printf("合并后的数组为: ");
for (int i = 0; i < 2*n; i++) {
printf("%d ", merged[i]);
}
printf("\n");
return 0;
}
```
注意:这是一个可以编译和运行的程序。请在本地计算机上编译和运行该程序,而不要直接尝试复制代码并在聊天窗口中运行它。