用c语言编写程序第一行输入第一个有序数组的元素数目以回车结束此输入。然后在第二行按照刚才输入的元素数目依次输入数组元素中间用空格分隔最后用回车结束输入。第三行和第四行只需重复刚才的步骤将第二个有序数组也输入即可。输入时候一定是有序输入的即数组元素已经按照从小到大顺序排列。
#include <stdio.h>
int main() { int n1, n2; // 分别为两个有序数组的元素数目 int arr1[100], arr2[100]; // 分别为两个有序数组 int i, j, k;
// 输入第一个有序数组
scanf("%d", &n1);
for (i = 0; i < n1; i++) {
scanf("%d", &arr1[i]);
}
// 输入第二个有序数组
scanf("%d", &n2);
for (i = 0; i < n2; i++) {
scanf("%d", &arr2[i]);
}
// 合并两个有序数组
int result[200]; // 合并后的有序数组,最多包含200个元素
i = 0; // 第一个有序数组的下标
j = 0; // 第二个有序数组的下标
k = 0; // 合并后的有序数组的下标
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while (i < n1) {
result[k++] = arr1[i++];
}
while (j < n2) {
result[k++] = arr2[j++];
}
// 输出合并后的有序数组
for (i = 0; i < k; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
原文地址: http://www.cveoy.top/t/topic/hoB1 著作权归作者所有。请勿转载和采集!