C语言程序编程看一下什么地方写错了

输入20个实数到数组k中,按大到小的顺序输出

看一下,我哪里写错了呀

代码如下:
#include <stdio.h>
main()
{
float k[28];
int i,j;
for(i=0; i<28; i++)
scanf("%f",&k[i]);
for(i=0; i<28; i++)
for(j=i; j<28; j++)
if(k[i]>k[j])
k[i]=k[j];
for(i=0; i<28; i++)
printf("%f ",k[i]);
}

if(k[i]>k[j])
k[i]=k[j];
if中要交换k[i],k[j]的值,你把k[j]赋值给k[i]了,原来在k[i]中的数据丢失了。

if(k[i]<k[j])
{
  float t=k[i];
  k[i]=k[j];
  k[j]=t;
}

楼上写反了

#include <stdio.h>
// num就是输入的数字数量,也可以先通过scanf赋值
int num = 5;
int main()
{
    float k[num];
    int i,j;
    for(i=0; i<num; i++)
        scanf("%f",&k[i]);    
    for(i=0; i<num; i++)
        printf("%.2f ",k[i]);
    printf("\n");
    for(i=0; i<num; i++){
        // 这里应该从i+1开始比较
        for(j=i+1; j<num; j++){
            if(k[i]<k[j]) {
                float temp = k[i];
                k[i]=k[j];
                k[j]=temp;
            }
        }
    }
    for(i=0; i<num; i++)
        printf("%.2f ",k[i]);
    return 0;
}