浮点数绝对值比较大小并排序

输入十个浮点数比较绝对值大小,进行冒泡排序,由大到小输出,不知道哪里有问题。

#include
#include
int main(){
    int i,j;
    float s[10]={0.0},k;
    for(i=0;i<10;i++)
        scanf("%f",&s[i]);
    for(i=0;i<9;i++)
    for(j=0;j<9-i;j++){
        if(fabs(s[j])<fabs(s[j+1]))
            k=s[j];
        s[j]=s[j+1];
        s[j+1]=k;
    }
    for(i=0;i<9;i++) printf("%.2f,",s[i]);
    printf("%.2f.",s[9]);
    return 0;
}
输入样例
34.5 -234 90.3 23.5 24.8 1234 879.7 23.98 1287.73 -2340.8
输出
-2340.80,1287.73,23.98,24.80,24.80,24.80,23.50,34.50,34.50,34.50.
出现两个24.80,而且比较也出了问题

#include <stdio.h>
#include <math.h>
int main()
{
    int i, j;
    float s[10] = {0.0}, k;
    for (i = 0; i < 10; i++)
        scanf("%f", &s[i]);
    for (i = 0; i < 9; i++)
        for (j = 0; j < 9 - i; j++)
        {
            if (fabs(s[j]) < fabs(s[j + 1]))
            {
                k = s[j];
                s[j] = s[j + 1];
                s[j + 1] = k;
            }
        }
    for (i = 0; i < 9; i++)
        printf("%.2f,", s[i]);
    printf("%.2f.", s[9]);
    return 0;
}