c语言冒泡排序求最大的100个数,排出来顺序是乱的

#include<stdio.h>
#include<time.h>
#include<math.h>
int main()
{
float a[10000];
int t,i,j,n,m,s;
t=0;
i=0;
j=0;
printf("羊的数量有几只(输入数量小于10000只)?");
scanf("%d",&n);

    for(;t<n;t++)
        {
            a[t]=(rand(time(NULL))%15000+20000)*0.001;
        }
for(;i<n-1;i++)
{
    for(;j<n-1-i;j++)
    {
        if(a[j+1]<a[j])
        {
            s=a[j+1];
            a[j+1]=a[j];
            a[j]=s;
        }
    }

}

for(m=n-100;m<n;m++)
{
printf("最重的羊有%.3fkg\n",a[m]);
system("PAUSE");
}
}

内循环j要初始化,外循环每循环一次j都是从0开始。

#include<stdio.h>
#include <time.h>
int main()
{
float a[10000];
float s;
int t,i,j,n,m;
t=0;
i=0;
j=0;
printf("羊的数量有几只(输入数量小于10000只)?");
scanf("%d",&n);
srand((time(NULL));

    for(;t<n;t++)
        {
            a[t]=(rand()%15000+20000)*0.001;
        }
for(;i<n-1;i++)
{
    for(j=0;j<n-1-i;j++)
    {
        if(a[j+1]<a[j])
        {
            s=a[j+1];
            a[j+1]=a[j];
            a[j]=s;
        }
    }
 
}
for(m=n-100;m<n;m++)
{
printf("最重的羊有%.3fkg\n",a[m]);

}
system("PAUSE");
return 0;
}