qsort實現結構體數組排序
阿新 • • 發佈:2019-04-08
sar for () can class oat info define amp
要註意強制轉換
#include <stdio.h> #include <stdlib.h> typedef struct{ int num; char name[20]; float chinese; float math; float english; }Stu,*pStu; #define N 3 void arrPrint(pStu sArr) { int i; for(i=0;i<N;i++) { printf("%d %10s %5.2f %5.2f %5.2f\n",sArr[i].num,sArr[i].name,sArr[i].chinese,sArr[i].math,sArr[i].english); } } int compare(const void* pleft,const void* pright) { pStu p1=(pStu)pleft; pStu p2=(pStu)pright; if(p1->chinese>p2->chinese) { return 1; }else if(p1->chinese<p2->chinese) { return -1; }else{ return 0; } } int main() { Stu sArr[N]; int i; for(i=0;i<N;i++) { scanf("%d%s%f%f%f",&sArr[i].num,sArr[i].name,&sArr[i].chinese,&sArr[i].math,&sArr[i].english); } printf("----------------------------\n"); arrPrint(sArr); qsort(sArr,N,sizeof(Stu),compare); printf("----------------------------\n"); arrPrint(sArr); system("pause"); }
qsort實現結構體數組排序