c语言库函数 qsort(),有问题,求解答!
#include "stdio.h"#include "algorithm"using namespace std;struct Node{ double cj;//成绩 int xh;//学号};int cmp(const void *a, const void *b)//先按成绩排序,如成绩相同按学号排序(降序){/* struct Node *c = (Node *)a; struct Node *d = (Node *)b; if (c->cj >= d->cj) { return 1; } else return -1;*/ return (*(Node *)a).cj > (*(Node *)b).cj ? 1:-1;}int main(){ Node node[5]; int i; int n; scanf("%d",&n); for (i = 0; i < n; i++) { scanf("%f%d",&node[i].cj,&node[i].xh); } qsort(node,n,sizeof(node[0]),cmp); for(i = 0; i < n; i++) printf("cj:%f xh:%d\n",node[i].cj,node[i].xh); return 0;}把%f改成%lf就Ok了#include "stdio.h"#include "algorithm"using namespace std;struct Node{ double cj;//成绩 int xh;//学号};int cmp(const void *a, const void *b)//先按成绩排序,如成绩相同按学号排序(降序){ struct Node *c = (Node *)a; struct Node *d = (Node *)b; if (c->cj != d->cj) { return c->cj - d->cj; } else return d->xh - c->xh;// return (*(Node *)a).cj - (*(Node *)b).cj;}int main(){ Node node[5]; int i; int n; scanf("%d",&n); for (i = 0; i < n; i++) { scanf("%lf %d",&node[i].cj, &node[i].xh); //把%f改成%lf就Ok了 } qsort(node,n,sizeof(node[0]),cmp); for(i = 0; i < n; i++) printf("cj:%f xh:%d\n",node[i].cj,node[i].xh); return 0;}