将两个数组分别赋值给第三个数组,在Linux下第二数组赋的值会乱码

#include<stdio.h>

int pai(int a[],int n)
{
    int i,j=0,k=0;
    int c[n/2];
    int d[n/2];
    a[n]='\0';
        for(i=0;i<n;i++)
        {
            if(a[i]%2==0)
            {
                c[j]=a[i];
                j++;
            }
            else
            {
                d[k]=a[i];
                k++;
            }
        }
        for(i=0;i<n;i++)
        {
            if(i<n/2)
            {
                a[i]=c[i];
            }
//            for(i=n/2;i<n;i++)
//            {
//                printf(" %d\n",a[i]);
//            }
//            if(i>n/2)
//            {
//                a[i]=d[i];
//                printf("%d   %d  %d\n",a[i],d[i],i);
//            }
        }
        for(i=0;i<n;i++)
        {
            printf("%d\n",a[i]);
            
        }
        for(i=0;i<n/2;i++)
            printf("%d\n",d[i]);
        for(i=0;i<n;i++)
            printf(" %d\n",a[i]);

}

int main()
{
    int i,j;
    int b[11]={0,1,2,3,4,5,6,7,8,9};
    int n=10;
    pai(b,n);
//    for(i=0;i<10;i++)
//        printf(" %d ",b[i]);
    return 0;
}