devc++从大到小排列

img

请帮我看一下,我想的order是从大到小的排列,但是运行起来是从小到大的排列该怎么改?

(1)m记录最最大值,m应该随if语句更新
(2)你没有对stu[j]进行交换
(3)if 中的条件 < 改成 >
整体代码修改如下:

void order()
{
    int i, j, m;
    for (j = 1; j <= count-1; j++)
    {
        m = j;
        for (i = j + 1; i <= count; i++)
        {
            if (stu[i].sum > stu[m].sum)
            {
                //stu[0] = stu[i];
                //stu[i] = stu[m];
                //stu[m] = stu[0];
                m = i;
            }
        }
        stu[0] = stu[m];
        stu[m] = stu[j];
        stu[j] = stu[0];
    }
    for (j = 1; j <= count; j++)

        printf("学号\t\t姓名\t\t性别\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
        printf("%s\t\t%s\t\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[j].StuID, stu[j].Stuname, stu[j].Stusex, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].sum, stu[j].ave);
    }
}

void order()
     {    
            int i,j,m;
            for(j=1;j<=count-1;j++)
        {    m=j;
            for(i=j+1;i<=count;i++)
            {
            if(stu[i].sum < stu[m].sum)
            {
             stu[0]=stu[i];
              stu[i]=stu[m];
             stu[m]=stu[0];
           }
           }
        }
        for(j=1;j<=count;j++)
        {
              printf("学号\t\t姓名\t\t性别\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
                                           printf("%s\t\t%s\t\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[j].StuID,stu[j].Stuname,stu[j].Stusex,stu[j].score1,stu[j].score2,stu[j].score3,stu[j].sum,stu[j].ave);
      }                 
     } 
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632