我试图将数组中的元素按照用户输入的大小从最小到最大进行排序。到目前为止这是我的代码:
#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是从0
到n
的索引
编辑:
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/