| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2347 人关注过本帖
标题:请教qsort函数的使用-stdlib.h中的一个函数
只看楼主 加入收藏
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
请教qsort函数的使用-stdlib.h中的一个函数
先说问题吧,我看书上讲到一个qsort快速排序函数,仿照例子写了个程序,编译正常,没有错误及警告提示,且.exe可执行文件也生成了,但是文件执行不了,就是双击.exe毫无反应。IDE:C-FREE5.0;编译器gcc吧。 补充下:IDE直接运行同样毫无反应
附上代码,请帮助看下问题出在哪里呢。谢谢

#include <stdio.h>
//引入qsort()函数所在头文件
#include <stdlib.h>
//引入memset()函数所在头文件
#include <string.h>
//自定义一个比较规则函数,必须具有两个"const void*"类型的参数
//并且返回一个int型的返回值
int cmp(const void* a,const void* b)
{
    //将void*类型的指针转换为int*类型的指针
    //然后用"*"解引用操作符获取它所指向的数据
    //最后将两个数进行大小比较
    //返回比较的结果-1(小于),0(等于),1(大于)
    int m=*((int*)a);
    int n=*((int*)b);        
    if(m<n)
        return -1;
    if(m==n)
        return 0;
    if(m>n)
        return 1;        
}
int main( )
{
    int i=0;
    //定义一个保存数据的数组
    int arr[10];
    //用memset()函数进行数组arr[]的初始化
    memset(arr,0,10*sizeof(int));
    //输入数据并保存到数组中
    puts("please input 10 numbers:");
    for(i=0;i<10;i++)
        scanf("%d",&arr[i]);
    //使用qsort()函数进行排序
    qsort(arr,10,sizeof(int),cmp);
    //输出排序结果
    puts("the sorted numbers are:");
    for(i=0;i<10;i++)
        printf("%d\t",arr[i]);
    return 0;
}


[此贴子已经被作者于2016-4-7 16:56编辑过]

搜索更多相关主题的帖子: include 执行文件 编译器 
2016-04-07 16:42
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
为什么不直接在IDE里运行,而要双击

未佩好剑,转身便已是江湖
2016-04-07 16:53
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 2楼 alice_usnet
开始就是直接F5运行,没有任何反应,才到文件夹中找到生成的文件去双击的。
2016-04-07 16:55
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:18 
我的Code::Blocks可以运行,不过有一个警告,建议更改如下:
程序代码:
int cmp(const void* a,const void* b)
{
    //将void*类型的指针转换为int*类型的指针
    //然后用"*"解引用操作符获取它所指向的数据
    //最后将两个数进行大小比较
    //返回比较的结果-1(小于),0(等于),1(大于)
    int m=*((int*)a);
    int n=*((int*)b);
    if(m<n)
        return -1;
    else if(m==n)
        return 0;
    else
        return 1;
}

   唯实惟新 至诚致志
2016-04-07 17:10
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:2 
回复 3楼 wanglianyi1
既然能顺利通过编绎并生成可执行文件,说明代码本身是没什么问题的。至于不能运行的话就要从其他方面考虑了,比如被什么安全之类的软件拦截了或编绎器的配置有问题,总之这方面的要素的话还是挺多的。。。

未佩好剑,转身便已是江湖
2016-04-07 17:54
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 5楼 alice_usnet
OK,谢谢

[此贴子已经被作者于2016-4-8 08:50编辑过]

2016-04-08 08:28
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 4楼 qq1023569223
我昨晚找书又自己看了下例子,确实用的if else if ..感谢.用3个if也可以运行了。是我在构建设置里加了-mwindows

[此贴子已经被作者于2016-4-8 08:43编辑过]

2016-04-08 08:29
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 5楼 alice_usnet
万分感谢,经你提醒才想起来之前为了试验图形库,在构建连接的参数行里加了-mwindows;所以不会显示CMD窗口。不是程序问题,是我设置的问题。不好意思啊,结贴之后才想起来,不知道有什么方法能再给你点分?
2016-04-08 08:43
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
回复 8楼 wanglianyi1
不客气,能帮到你我感觉就挺好的了,至于加分的话就没必要了,以后还请多指教

未佩好剑,转身便已是江湖
2016-04-08 10:54
快速回复:请教qsort函数的使用-stdlib.h中的一个函数
数据加载中...
 
   



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

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