qSort not Sorting my array

这是我的代码:

#include  #include  float comp (const void * elem1, const void * elem2) { float f = *((float*)elem1); float s = *((float*)elem2); if (f > s) return 1; if (f < s) return -1; return 0; } int main(void) { int t, n, temp, temp1, x; float input[2][50][1000]; scanf("%d", &t); for(temp=0; temp<t; temp++){ scanf("%d ", &n); for(temp1=0; temp1<n; temp1++){ scanf("%f", &input[0][temp][temp1]); } for(temp1=0; temp1<n; temp1++){ scanf("%f", &input[1][temp][temp1]); } for(x=0; x<temp1; x++){ printf("%f", input[0][temp][x]); } qsort (input[0][temp], n, sizeof(*input[0][temp]), comp); printf("\n Sorted Array:"); for(x=0; x<temp1; x++){ printf("%f", input[0][temp][x]); } } return 0; } 

这是我的输出:0.7000000.2000000.800000排序数组:0.7000000.2000000.800000

任何人都可以告诉为什么qsort()不适合我?

比较函数必须返回int (不是float )。 所以你需要做的是,改变这个: float comp (const void * elem1, const void * elem2) { to int comp (const void * elem1, const void * elem2) {就是这样! 🙂