33,027
社区成员




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* 声明应该这样
*/
int cmp(const void * a, const void * b);
int main(){
int i, n;
int a[10];
char t;
scanf("%d", &n);getchar();
for(i = 0; i < n; i++){
scanf("%d%c", &a[i], &t);
}
/*
* 调用参数错了
* void qsort(
* void *base, // 数组的基地址
* size_t num, // 数组的单元数
* size_t width,// 数组单元的字节数
* int (__cdecl *compare )(const void *, const void *) // 比较函数
* );
*/
qsort(a, n, sizeof(int), cmp);
for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
/*
* 没有判断相等的情况,不符合规范
int cmp(const void *a, const void *b){
if(*((int *)a) > *((int *)b)) return 1;
else return -1;
}
*/
/*
* 对于简单的整数可以这样
*/
int cmp(const void * a, const void * b){
return ( *(int *)a - *(int *)b );
}