| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1753 人关注过本帖
标题:新手求教一个简单问题:用qsort函数怎么为float数据排序?
取消只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
 问题点数:0 回复次数:4 
新手求教一个简单问题:用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: 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
快速回复:新手求教一个简单问题:用qsort函数怎么为float数据排序?
数据加载中...
 
   



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

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