首先设计一个表示学生信息的结构类型,包含学号、姓名、出生日期(包含年、月、日三部分信息)和3门课(语文、数学、英语)的成绩;
typedef struct students
{
double id;
char name[20];
int year;
int month;
int day;
int chinese, math, english;
int add;
};
students stu[10000];
以for语句输入结构体 以及计算结构体的总分等部分(不再演示了哈)
然后定义一个结构体指针 ,一个中间量结构体。
students* max = NULL;
students tem;
以冒泡排序来凭借总分对结构体进行排序
max=stu; //此处注意max=stu而不是students *max=stu(本人出错)
void sort_students(int sum)
{
//此处sum指的是结构体数组中有效数量
for (int i = 0; i < sum ; i++)
{
for (int j = 0; j < sum - i-1; j++)
{
if ((max+j)->add <= (max+1+j)->add)
{
tem = *(max+j);
*(max+j) = *(max+1+j);
*(max+1+j) = tem;
}
}
}
}
/*指针指向的地址是不会再改变的,所以只能依靠(指针+j)的形式来进行值的比较*/