c语言不用库函数在某无序一维数组arr[N]中,将数组中的奇数和偶数分开,并排序输出到一个2行的二维数组中,第一行存放奇数,第二行存放偶数,二维数组原本全部存放-1。如int arr[N] = {1,2,3,4,56,43,22,12,……};
时间: 2024-10-04 11:01:48 浏览: 59
在C语言中,你可以通过遍历数组、检查元素的奇偶性以及动态分配内存来实现这个需求。首先,你需要创建一个新的二维数组,其中包含两个部分,分别用于存储奇数和偶数。由于原有的arr数组长度未知,我们可以假设最大长度N,并初始化所有元素为-1。
以下是一个简单的示例代码,假设我们已经有一个名为`separate_numbers`的函数来处理此任务:
```c
#include <stdio.h>
#include <stdlib.h>
// 功能函数,接收一个指针和长度作为参数
void separate_and_sort(int *arr, int N, int **result) {
// 检查输入是否为空或长度为0
if (!arr || N == 0) {
printf("Invalid input!\n");
return;
}
int odd_count = 0, even_count = 0; // 记录奇数和偶数的数量
int odd[N], even[N]; // 存储奇数和偶数的部分
for (int i = 0; i < N; i++) {
if (arr[i] % 2 == 0) {
even[even_count++] = arr[i];
} else {
odd[odd_count++] = arr[i];
}
}
// 确保有足够的空间
if (odd_count + even_count > N || odd_count > sizeof(odd)/sizeof(*odd) ||
even_count > sizeof(even)/sizeof(*even)) {
printf("Not enough space to store the numbers.\n");
return;
}
// 对奇数和偶数部分进行排序
qsort(odd, odd_count, sizeof(int), compare_ints);
qsort(even, even_count, sizeof(int), compare_ints);
// 将结果组合成新的二维数组
*result = (int **)malloc((odd_count + even_count) * sizeof(int *));
(*result)[0] = odd;
(*result)[1] = even;
printf("Sorted arrays:\n");
print_array(odd, odd_count, "Odd numbers:");
print_array(even, even_count, "Even numbers:");
}
// 自定义比较函数,用于qsort
int compare_ints(const void *a, const void *b) {
return (*(const int *)a - *(const int *)b);
}
// 打印整型数组
void print_array(int *arr, int count, char *prefix) {
printf("%s [", prefix);
for (int i = 0; i < count; i++) {
printf("%d ", arr[i]);
}
printf("]\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 56, 43, 22, 12};
int N = sizeof(arr) / sizeof(arr[0]);
int **sorted_arrays = NULL;
separate_and_sort(arr, N, &sorted_arrays);
// 使用完记得释放内存
free(sorted_arrays);
return 0;
}
```
在这个例子中,我们使用了`qsort`函数对数组进行排序,`compare_ints`函数是排序函数需要的比较函数。注意在主函数结束时,要手动释放动态分配的内存。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)