数组输出问题帮忙纠下错
题目为:10、一维数组中存有奇数和偶数,将奇数在奇数的位置上从大到小排序,将偶数在偶数的位置上“前后翻转”。例如:处理前char a[10]={1,8,12,2,5,6,7,10,9,4},
处理后char a[10]={9,4,10,6,7,2,5,12,1,8}
我的程序不报错,但是不出结果,为什么呢?
#include"stdio.h"
void main()
{
int a[10]={1,8,12,2,5,6,7,10,9,4};
int b[10]={0};
int c[10]={0};
int i,j,k,p,m,n,d;
i=j=k=p=m=n=0;d=9;
for(i=0;i<10;i++)
{
if(a[i]%2==0)
{
b[j]=a[i];
a[i]=0;
j++;
}
if(a[i]%2!=0)
{
c[k]=a[i];
a[i]=1;
k++;
}
}/*将偶数放进数组B,奇数放进数组C,奇数为1偶数为0所以a[10]={1,0,0,0,1,0,1,0,1,0}*/
for(i=0;i<9;i++){
for(p=0;p<9-i;p++)
{ if(c[p]>c[p+1])
{m=c[p];
c[p]=c[p+1];
c[p+1]=m;
}}}/*冒泡排序,此时C数组为c[10]={0,0,0,0,0,0,1,5,7,9}*/
n=j-1;/*到这里设断点查都没问题,B数组为b[10]={8,12,2,6,10,4},n值为5*/
/*就从这里开始*/
for(i=0;i<10;i++)
{
if(a[i]==0){a[i]=b[n];n--;printf("%2d",a[i]);}
if(a[i]==1){a[i]=c[d];d--;printf("%2d",a[i]);}
}
/*数组还原时出了问题?*/
}