四个学生的姓名学号成绩,按照成绩从高到低排序
知识点:冒泡排序
冒泡排序一种要注意:
1 要经过n-1次排序
2每一次排序从0开始,从n-i-1处结束(因为要和后一位比较)(我习惯i从1开始,到n-1结束)
#include <stdio.h>
#include <stdlib.h>
struct stu
{
int xh,score;
char name[30];
};
void inputh (struct stu *p)
{
int i;
for(i=0;i<4;i++)
{
printf("输入第%d个学生的信息:学号、姓名、成绩\n",i+1);
scanf("%d %s %d",&(p+i)->xh,(p+i)->name,&(p+i)->score);
}
}
void paixu(struct stu *p)
{
int i,j;
struct stu a;
for(i=1;i<=3;i++)
{
for(j=0;j<=4-i-1;j++)
{
if((p+j)->score<(p+j+1)->score)
{
a=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=a;
}
}
}
}
int main()
{
struct stu mate[4];
int i;
void inputh();
void paixu();
inputh(mate);
paixu(mate);
printf("排序后学生的信息为:\n");
for(i=0;i<4;i++)
{
printf("%d %s %d\n",mate[i].xh,mate[i].name,mate[i].score);
}
}