| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1751 人关注过本帖
标题:新手求教一个简单问题:用qsort函数怎么为float数据排序?
只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
 问题点数:0 回复次数:10 
新手求教一个简单问题:用qsort函数怎么为float数据排序?
#include<stdio.h>                    
                    
#include<stdlib.h>                    
                    
int commp(const void *a, const void *b)                    
{                    
 return ((int *)a)[0] - ((int *)b)[0];                    
}                    
                    
main()                    
{                    
 int i,a[5][2] = {2,0, 3,3, 4,5, 1,1, 99,22};                    
 qsort(a, sizeof(a)/sizeof(int)/2, 2*sizeof(int ),commp);                    
                    
 for(i = 0; i < sizeof(a)/sizeof(int )/2; i++)                    
 {                    
if(a[i][1] != 0)                    
{                    
printf("%d", a[i][0]);   

printf("\n");               
break;                    
}                    
 }                    
                    
 return 0;   
 
}                    


1
Press any key to continue


怎么为float数据排序计算?例如:a[5][2] = {2.01,0, 3.1,-3.2, 4,5, 1,1, 9.9,22};   


搜索更多相关主题的帖子: include return 
2017-01-21 16:18
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
经过网上搜索qsort函数用法,问题有解了!

#include<stdlib.h>

int commp(const void *a, const void *b)
{
return *(double *)a > *(double *)b ? 1 : -1;
}

main()
{
 int i;
 double a[5][2] = {2.01,0, -3.1,-3.2, 4,5, 1,1, 9.9,22};
 qsort(a, sizeof(a)/sizeof(double)/2, 2*sizeof(double ),commp);

 for(i = 0; i < sizeof(a)/sizeof(double )/2; i++)
 {
if(a[i][1] != 0)
{
printf("%lf", a[i][0]);

printf("\n");
break;
}
 }

 return 0;
 
}


-3.100000
Press any key to continue



2017-01-21 16:55
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
感谢版主:炎天的真心指教!
图片附件: 游客没有浏览图片的权限,请 登录注册


2017-01-21 17:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int comp(const void *a,const void *b)
{
    return ((float *)a)[0] > ((float *)b)[0] ? 1 : -1;
}

main()
{
    float a[5][2]={2.01,0, 3.1,-3.2, 4,5, 1,1, 9.9,22};
    qsort(a,5, sizeof(float)*2, comp);
    int i,j;
    for (i=0; i<5; i++)
    {
        for (j=0; j<2; j++)
            printf("%.2f ", a[i][j]);
        printf("\n");
    }
}
2017-01-21 17:23
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 3楼 宇宙规律
额, 你没有弄错吧?  我没有回帖诶在这之前。
主要是数据类型不要对应错了
#include<stdio.h>                    
                    
#include<stdlib.h>                    
                    
int commp(const void *a, const void *b)                    
{                    
  return ((float *)a)[0] - ((float *)b)[0];                    
}                    
                    
main()                    
{   
    int i = 0;               
    float a[5][2] = {2.01,0, 3.1,-3.2, 4,5, 1,1, 9.9,22};   
                  
    qsort(a, sizeof(a)/sizeof(float)/2, 2*sizeof(float ),commp);                    
                    
    for(i = 0; i < sizeof(a)/sizeof(float )/2; i++)                    
    {                    
       if(a[i][1] != 0)                    
       {                    
          printf("%-6.2f%-6.2f", a[i][0], a[i][1]);   

          printf("\n");               
          //break;                    
       }                    
    }                    
                    
    return 0;   
 }

早知做人那么辛苦!  当初不应该下凡
2017-01-21 20:59
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
看三楼的贴我莫名其妙地笑了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-21 21:51
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 5楼 炎天
感谢指教;我是自学C语言的,书上确实没有这样的函数方法;

#include<stdio.h>                    
                    
#include<stdlib.h>                    
                    
int commp(const void *a, const void *b)                    
{                    
  return ((float *)a)[0] - ((float *)b)[0];                    
}                    
                    
main()                    
{   
    int i = 0;               
    float a[5][2] = {2.01,0, -3.1,-1, 4,5, 1,-1, 9.9,22};   
                  
    qsort(a, sizeof(a)/sizeof(float)/2, 2*sizeof(float ),commp);                    
                    
    for(i = 0; i < sizeof(a)/sizeof(float )/2; i++)                    
    {                    
       if(a[i][1] != 0)                    
       {                    
          printf("%-6.2f%-6.2f", a[i][0], a[i][1]);   

          printf("\n");               
          break;                    
       }                    
    }                    
                    
    return 0;   
 }


-3.10 -1.00
Press any key to continue
2017-01-22 09:50
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
#include<stdio.h>                    
                    
#include<stdlib.h>                    
                    
int commp(const void *a, const void *b)                    
{                    
  return ((float *)a)[0] - ((float *)b)[0];                    
}                    
                    
main()                    
{   
    int i = 0;               
    float a[5][2] = {2.01,0, -3.1,-1, 4,5, 1,-1, 9.9,22};   
                  
    qsort(a, sizeof(a)/sizeof(float)/2, 2*sizeof(float ),commp);                    
                    
    for(i = 0; i < sizeof(a)/sizeof(float )/2; i++)                    
    {                    
       if(a[i][1] != 0)                    
       {                    
          printf("%-6.2f%-6.2f", a[i][0], a[i][1]);
          printf("\n");      
          if(a[i][1] == a[i+1][1])
          printf("%-6.2f%-6.2f", a[i+1][0], a[i+1][1]);

          printf("\n");               
          break;                    
       }                    
    }                    
                    
    return 0;   
 }

-3.10 -1.00
1.00  -1.00
Press any key to continue

2017-01-22 09:55
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
自学不错哦~我也来学习一下~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-22 11:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
sizeof(a)/sizeof(a[0])~比较好看结果都是5~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-22 11:54
快速回复:新手求教一个简单问题:用qsort函数怎么为float数据排序?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036941 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved