请问我这个给一组数由大到小排序的程序有什么问题?

img

从大到小排序,if(a[k] > a[j])这里 应该是 if(a[k] < a[j])。
代码书写规范一下,排序部分代码:

for (i=0;i<9;i++)
{
    k = i;
    for (j=i+1;j<10;j++)
    {
        if(a[j] > a[k])
            k = j;
    }
    if(k != i)
    {
        t = a[i];
        a[i] = a[k];
        a[k] = t;
    }
}

if没加括号,导致只有k=j生效了,其他的都在if外面,每个周期都执行一遍,所以你数据全搞乱了
而且你的k完全是个多余的变量
你一会把i赋值给它,一会把j赋值给ta
其实你直接用i和j就行了