用插入排序法从高到底输出数据遇到的问题

请问下面这段代码输入2 3 1为什么会输出3 1 1而不是3 2 1

#include<stdio.h>
int main()
{int i=0,stu[100],c[100]={0};
for(int j=0;j<3;j++){i++;
  scanf("%d",&stu[i-1]);
  for(int s=i-2;s>=0;s-- ){if(stu[i-1]>stu[c[s]]) { 
            c[s+1]=c[s];
            if(s==0) {c[s]=i-1;} 
            }
            else     c[s+1]=i-1;
            }
}
for(int j=0;j<i;j++){
    printf("%d ",stu[c[j]]);
}
}


 int stu[100];
    int num = 0;
    int a;
    for (int i = 0; i < 5; ++i)
    {
        scanf("%d",&a);
        if(num == 0)
        {
            stu[num] = a;
            num++;
            continue;
        }
        if(stu[num -1] >= a)
        {
            stu[num] = a;
            num++;
            continue;
        }
        for (int j = 0; j < num; ++j)
        {
            if(a > stu[j])
            {
                for (int l = num-1; l>=j; l--)
                {
                    stu[l+1] = stu[l];
                }
                stu[j] = a;
                num++;
                break;
            }
        }
    }
    printf("\n");
    for (int i = 0; i < num; ++i)
    {
        printf("%d,",stu[i]);
    }