用c语言不使用指针给出整个程序给你两个数组arr1 和 arr2arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中。对 arr1 中的元素进行排序使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
#include <stdio.h>
// 定义最大数组长度 #define MAX_LENGTH 100
// 冒泡排序函数 void bubbleSort(int arr[], int n) { int i, j, 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() { int arr1[MAX_LENGTH], arr2[MAX_LENGTH]; int n1, n2; int i, j, k;
// 输入 arr1 数组
printf("Enter the length of arr1: ");
scanf("%d", &n1);
printf("Enter the elements of arr1: ");
for (i = 0; i < n1; i++) {
scanf("%d", &arr1[i]);
}
// 输入 arr2 数组
printf("Enter the length of arr2: ");
scanf("%d", &n2);
printf("Enter the elements of arr2: ");
for (i = 0; i < n2; i++) {
scanf("%d", &arr2[i]);
}
// 对 arr1 中 arr2 中出现的元素进行排序
for (i = 0; i < n2; i++) {
for (j = 0; j < n1; j++) {
if (arr1[j] == arr2[i]) {
// 找到了对应的元素,将其移到前面
for (k = j; k > i; k--) {
arr1[k] = arr1[k-1];
}
arr1[i] = arr2[i];
break;
}
}
}
// 对 arr1 中未出现在 arr2 中的元素进行排序
int tempArr[MAX_LENGTH];
int tempArrLen = 0;
for (i = 0; i < n1; i++) {
for (j = 0; j < n2; j++) {
if (arr1[i] == arr2[j]) {
break;
}
}
if (j == n2) {
// arr1[i] 未出现在 arr2 中,加入到 tempArr 数组中
tempArr[tempArrLen++] = arr1[i];
}
}
bubbleSort(tempArr, tempArrLen);
// 将 tempArr 数组中的元素加入到 arr1 数组尾部
for (i = 0; i < tempArrLen; i++) {
arr1[n1+i] = tempArr[i];
}
// 输出排序后的 arr1 数组
printf("Sorted arr1: ");
for (i = 0; i < n1+tempArrLen; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
原文地址: https://www.cveoy.top/t/topic/e9bF 著作权归作者所有。请勿转载和采集!