#define ok 1
#define error 0
#define n 11
int lt(int a,int b)
{if(a<b) return ok;
 else return error;
}
void shellinsert(int *r,int dk)
{int i,j;
for(i=dk+1;i<=(n-1);++i)
if(lt(r[i],r[i-dk]))
  { r[0]=r[i];
    for(j=i-dk;j>0&&lt(r[0],r[j]);j-=dk)
    {r[j+dk]=r[j];
     r[j+dk]=r[0];
     }
   }
}
void shellsort(int *a,int *d,int t)
{int k;
 for(k=0;k<t;++k)
  shellinsert(a,d[k]);
}
main()
{int i,j,a[n],d[3];
 printf("input the step:\n");
 for(i=0;i<=2;i++)
 scanf("%d",&d[i]);
 printf("input the dates:\n");
 for(j=1;j<n;j++)
 scanf("%d",&a[j]);
 shellsort(a,d,i);
 for(j=1;j<n;j++)
 printf("%d ",a[j]);
 getch();
}

请大家看看那里错了啊,为什么我输入数据后排序是不正确的啊