请问下面这段代码输入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]);
}