一个c程序求解释,该怎么解决

一个c程序求解释
#include<stdio.h>
void main()
{ int a[10],b[10],m=0,n=0,i,j,data;
  for(i=0;i<10;i++)
scanf("%d",a[i]);
  for(i=0;i<10;i++)
{m=a[i];
  for(j=0;j<=2;j++)
  {if(m%10==0);
  else break;
  m=m/10; 
  if(m==2) 
  {b[n]=a[i];n++;}
  }
  }
  n--;
  for(i=0;i<n;n++)
for(j=i+1;j<=n;j++)
if(b[i]>=b[j])
{data=b[i];
  b[j]=b[i];
b[i]=data;
  }
  for(i=0;i<=n;i++)
  {printf("%d",b[i]);}
}
不知道为什么运行不了,求解释

------解决方案--------------------
读数据 这一句:
scanf("%d", a[i]); 应该是这样的吧 scanf("%d", &a[i]);
------解决方案--------------------
C/C++ code

#include<stdio.h>
void main(){

    int a[10],b[10],m=0,n=0,i,j,data;

    /*对数组进行赋值*/
    for(i=0;i<5;i++)
        scanf("%d",&a[i]);

    /*判断数组中符合条件的值*/
    for(i=0;i<5;i++){
        m=a[i];
        while(m != 0){
            if(m%2 == 0)
                break;
            else
                m = m / 10;

        }
        if(m==0){
            b[n]=a[i];
            n++;
        }
    }

    n--;
    /*赋值后直接输出数组b的值*/
    for(i=0;i<=n;i++){
        printf("%d \t",b[i]);
    }
    /*对数组b进行排序*/
    for(i=0;i<n;i++){
        for(j=i+1;j<=n;j++)
            if(b[i]>=b[j]){
                data=b[i];
                b[i]=b[j];
                b[j]=data;
            }
    }
    printf("\nThe array of sorting is :\n");
    /*输出排序后的数组b*/
    for(i=0;i<=n;i++){
        printf("%d \t",b[i]);
    }

    getch();
    return ;
}