一个排序问题,困扰我好久,求前辈们解答

之前发过,可还是没有解决,网页也找不到了,我有修改了一下,可还是运行不了,求前辈们帮我看一下。
#include

int imax(int shuzu[], int n)
{
int i, max;

max = shuzu[0];
for (i = 0; i < n; i++) {
    if (shuzu[i] > max) max = shuzu[i];
}

return (max);

}

int main(void)
{
int i, j, k, l, max;
int vb[10], vc[10];

printf("请输入10个整数\n");
//第一个for:将数据存入数组 
for (i = 0; i < 10; i++) {
    printf("%2d号:", i + 1);
    scanf("%d", &vb[i]);
}

//第二个for:排序 
for (i = 0; i < 9; i++) {
    max = imax(vb, 10 - i);

    //第一个内置for:将比max小的存入vc数组 
    for (j = 0, k = 0; j < 10-i; j++) {
        if (vb[j] < max) {
            vc[k] = vb[j];
            k++;
        }   
    }
    //最后会空出一个给最大值 
    vc[9-i] = max;

    //第二个内置for:将vc的数据还给vb 
    for (l = 0; l < 10-i; l++) {
        vb[l] = vc[l];
    }   
}

for (i = 0; i < 10; i++) {
    printf("%d\n", vb[i]);
} 

return 0;

}


第二个内置for能用 i 去做循环吗。。要不把 i 换成 j 什么的试试。。

 你的排序设计太繁琐,错误原因:
        for (i = 0; i < 10-i; i++) {//破坏了外层循环用的变量i,这个循环也不正确
            vb[i] = vc[i];
        }   
        改为:
                //第二个内置for:将vc的数据还给vb 
        for (j = 0; j < 10-i; j++) {//破坏了外层循环用的变量i
            vb[j] = vc[j];
        }