排序 C语言问题 ,oj平台为啥一直测试成功,提交错误,代码哪儿有错吗?


#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int i,j,a[97],b[97],min;
    if(n>3&&n<101)
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n;i++)
        {
            b[i]=a[i];
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(a[i]<a[j])
                {
                    min=a[i];
                    a[i]=a[j];
                    a[j]=min;
                }
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(b[i]==a[j])
                printf("%d ",j+1);
            }
        }
    }
    return 0;
}

题目是n个同学编号依次为1,2,……,n,每个同学一个分数。请你做一份全班成绩排名表 你要按照分数从高到低将所有同学排序,再输出编号 保证任意两个同学分数互不相同,输入:第一行,整数n(3<n<101) 接下来n行,每行1个整数(不大于100)表示分数,输出:一行,排名为1,2……的编号。`

27行,for(j=0;j<n-i-1;j++)


 
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int i,j,a[97],b[97],min;
        for(i=0;i<n;i++){
        scanf("%d",&a[i]);
            b[i]=a[i];
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(a[i]<a[j])
                {
                    min=a[i];
                    a[i]=a[j];
                    a[j]=min;
                }
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(a[i]==b[j])
                printf("%d ",j+1);
            }
        }
    return 0;
}