我有一个数字数组..需要什么:通过malloc创建2个新数组,一个用于偶数,一个用于奇数,我们也需要在main中打印它们以及每个数组的大小
数组为 1,2,5,6,8,4,5,10,65,69,98,76,46,49,67
偶数数组必须是:2,6,8,4,10,98,76,46
奇数数组必须是:1,5,5,65,69,49,67
函数一定要这样写(老师要这样)
void evenodd(int a[],int** even,int* evensize,int** odd,int* oddsize)
我的代码:
#include <stdio.h>
#include <stdlib.h>
#define N 15
void evenodd(int a[],int** even,int* evensize,int** odd,int* oddsize)
{
int i,j,cnte,cnto,e,o;
cnte=cnto=0;
for(i=0;i<N;i++)
if(a[i]%2==0) cnte++;
else cnto++;
even=(int**)malloc(sizeof(int)*cnte);
*evensize=cnte;
odd=(int**)malloc(sizeof(int)*cnto);
*oddsize=cnto;
for(i=0,o=0,e=0;i<N;i++)
if(a[i]%2==0)
even[e++]=a[i];
else odd[o++]=a[i];
return;
}
int main()
{
int i;
int a[N]={1,2,5,6,8,4,5,10,65,69,98,76,46,49,67};
int *even,evensize,*odd,oddsize;
evenodd(a,&even,&evensize,&odd,&oddsize);
printf("Even Numbers Array: ");
for(i=0;i<evensize;i++)
printf("%d ",even[i]);
printf("\nSize of even array is: %d",evensize);
printf("\n\n");
printf("Even Numbers Array: ");
for(i=0;i<oddsize;i++)
printf("%d ",odd[i]);
printf("\nSize of even array is: %d",oddsize);
}
我认为错误出在 Malloc 中.. 但我不知道为什么..