首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言库函数 qsort(),有有关问题,求解答

2012-04-12 
c语言库函数 qsort(),有问题,求解答!C/C++ code#include stdio.h#include algorithmusing namespace s

c语言库函数 qsort(),有问题,求解答!

C/C++ code
#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;}

排序函数int cmp();有问题,排序double型 ,我修改后依然不行,求解答!

[解决办法]
C/C++ code
把%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;} 

热点排行
Bad Request.