(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);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!