|
发表于 2019-6-12 11:47:46
|
显示全部楼层
你可以参考这段代码,当学生名成绩不同时,按照成绩高低来排列,当学生成绩相同时,按照学生姓名的字母顺序来排列
- typedef struct
- {
- char last_name[25];
- int stu_id;
- char grade;
- } student;
- student input[5] = {
- {"xiaoming",910017,'A'},
- {"xiaoli",934422,'C'},
- {"xiaozhang",878766,'B'},
- {"xiaowang",123456,'D'},
- {"xiaofang",989420,'A'}
- };
- static int cmpstudents(const void *p1, const void *p2)
- {
- student *l = (student *)p1;
- student *r = (student *)p2;
- if (l->grade==r->grade)
- {
- return strcmp(l->last_name,r->last_name);
- }
- return (l->grade > r->grade)?(1):(-1);
- }
- int main ()
- {
- int i;
- for (i=0;i<5;i++)
- {
- printf("%s\t%d\t%c\n",input[i].last_name,input[i].stu_id,input[i].grade);
- }
- printf("\n----------------------------\n");
- qsort(input,5,sizeof(student),cmpstudents);
- for (i=0;i<5;i++)
- {
- printf("%s\t%d\t%c\n",input[i].last_name,input[i].stu_id,input[i].grade);
- }
- return 0;
- }
复制代码 |
|