C语言编程:给两个按 非递减顺序 排列的整数数组 arr1 和 arr2 ,另有两个整数 len1 和 len2 ,分别表示 arr1 和 arr2 中的元素数目。 请合并 arr2 到 arr1 中,使合并后的数组同样按 非递减顺序 排列。注意,合并后的数组不应该由函数返回,而是存储在arr1中,arr1的初始长度是len1+len2,前len1个元素表示应合并的元素,后len2个元素为0.手动输入时用#进行隔离,示例:123#256#表示输入arr1=[1,2,3],len1=3,arr2=[2,5,6],len2=3。
时间: 2024-02-26 15:57:17 浏览: 37
好的,这是一道比较基础的数组操作题目。以下是C语言的代码实现:
```c
#include <stdio.h>
void merge(int* arr1, int len1, int* arr2, int len2) {
int i = len1 - 1, j = len2 - 1, k = len1 + len2 - 1;
while (i >= 0 && j >= 0) {
if (arr1[i] > arr2[j]) {
arr1[k--] = arr1[i--];
} else {
arr1[k--] = arr2[j--];
}
}
while (j >= 0) {
arr1[k--] = arr2[j--];
}
}
int main() {
int arr1[100], arr2[100];
int len1 = 0, len2 = 0;
char c;
while ((c = getchar()) != '\n') {
if (c >= '0' && c <= '9') {
arr1[len1++] = c - '0';
} else if (c == '#') {
break;
}
}
while ((c = getchar()) != '\n') {
if (c >= '0' && c <= '9') {
arr2[len2++] = c - '0';
}
}
merge(arr1, len1, arr2, len2);
for (int i = 0; i < len1 + len2; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
return 0;
}
```
首先,我们定义了一个 `merge` 函数来合并两个数组。由于 `arr1` 和 `arr2` 都是按非递减顺序排列的,我们可以使用两个指针 `i` 和 `j` 分别指向 `arr1` 和 `arr2` 的最后一个元素,并定义一个指针 `k` 指向合并后的数组的最后一个位置。接着,从后往前遍历 `arr1` 和 `arr2`,比较它们的最后一个元素的大小,将较大的元素放到 `arr1` 的末尾,并将对应指针向前移动一位。直到其中一个数组遍历完毕。最后,若 `arr2` 中还有剩余元素,将它们依次放到 `arr1` 的前面。
在主函数中,我们用 `getchar` 函数来手动输入数组元素,并使用 `#` 符号进行隔离。注意,输入时元素之间不应有空格。最后,调用 `merge` 函数合并两个数组,并输出合并后的结果。
注意,本代码实现中没有对输入数据的格式进行严格检查,如果输入数据格式不正确,程序可能会出现错误。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)