我试图将数组中的元素按照用户输入的大小从最小到最大进行排序。到目前为止这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define MAXVALUES 20

void sort(int *A[], int n) {
    int i, tmp, j;
    for (i = 0; i <= (n - 2); i++) {
        for (j = (i + 1); j <= (n - 1); j++) {
            if (*A[i] > *A[j]) {
                tmp = *A[i];
                *A[i] = *A[j];
                *A[j] = tmp;
            }
        }
    }
    return;
}

int main(int argc, char *argv[]) {
    int n, A[MAXVALUES], i;
    printf("Enter an array and no. of elements in array: ");
    scanf("%d%d", &A[MAXVALUES], &n);
    sort(A[MAXVALUES], n);
    printf("Ordered array is: \n");
    for (i = 0; i <= (n - 1); i++) {
        printf("  %d", A[i]);
    }
    return 0;
}

编译器编译它时没有任何错误,但在我输入之后它就停止工作了。我还没有完全掌握数组和指针背后的理论,所以有人能告诉我我的代码哪里出错了吗?

最佳答案

scanf("%d%d", &A[MAXVALUES], &n);是问题所在
这不是你读数组的方式。
首先阅读n,然后在循环中阅读
scanf("%d", &A[i]);其中i是从0n的索引
编辑:

scanf("%d", &n);

int i = 0;

for(i = 0; i < n; i++)
{
    scanf("%d", &A[i]);
}

这就是你想要的。

关于c - 用C对数组排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26842131/

10-11 22:07
查看更多