用c语言分别输入两个长度为5的从小到大排好序的整数数组,将这两个数组合并到第三个数组中,保持从小到大的排序,并输出
时间: 2024-11-10 22:25:42 浏览: 34
在 C 语言中,你可以通过两层循环来合并两个已排序的整数数组,并将其存储到第三个数组中。这里是一个简单的示例:
```c
#include <stdio.h>
void merge_sorted_arrays(int arr1[], int arr2[], int len1, int len2, int result[]) {
int i = 0, j = 0, k = 0; // 初始指针
while (i < len1 && j < len2) { // 当两个数组都还有元素
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++]; // 将较小的元素添加到结果数组并移动指针
} else {
result[k++] = arr2[j++]; // 同理,较大的元素
}
}
// 如果有剩余的元素,把第一个数组剩下的复制过去
while (i < len1) {
result[k++] = arr1[i++];
}
// 如果第二个数组有剩余,再复制过去
while (j < len2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[5], arr2[5], result[10], len1, len2;
// 分别读取两个已排序数组的元素
printf("请输入第一个数组的5个元素(从小到大):");
for (len1 = 0; len1 < 5; len1++) {
scanf("%d", &arr1[len1]);
}
printf("请输入第二个数组的5个元素(从小到大):");
for (len2 = 0; len2 < 5; len2++) {
scanf("%d", &arr2[len2]);
}
// 初始化结果数组
for (int i = 0; i < 10; i++) {
result[i] = 0;
}
// 合并数组
merge_sorted_arrays(arr1, arr2, len1, len2, result);
// 输出结果数组
printf("合并后的有序数组:");
for (int i = 0; i < len1 + len2; i++) {
printf("%d ", result[i]);
}
return 0;
}
```
当你运行这个程序,会提示用户输入两个排序好的数组,然后合并它们并输出合并后的数组。
阅读全文