Heyo!
我是C语言的新手,遇到了一堵砖墙,试图对一组数字进行排序。
如果我输入'5 3 0 9 5',它将正确返回9 5 5 3 0。
但是,“ 5 3 0 0 9 9 10 11 13 14 9”不会返回任何值。一些调试显示它到达3,然后停止。
我应该从哪里开始寻找?
这是我的代码,但一般建议是可以的:
#include <stdio.h>
#include <stdlib.h>
int getvals(int A[]);
void val_swap(int *a,int *b);
int main() {
int len = 0;
int vals[len];
len = getvals(vals);
int i = 0, j = 0;
/* Search through the values from start to finish */
for (; i < len; i++) {
/* Search back through the values, right to left. If we find a smaller value, swap. */
for (j = i-1; j >= 0 && vals[j+1] > vals[j]; j--) {
/* Swap */
val_swap(&vals[j], &vals[j+1]);
}
}
/* Print the sorted array */
int k = 0;
for (; k < len; k++) {
printf("%d ", vals[k]);
}
return 0;
}
int getvals(int A[]) {
/* Gets a list of integer values from the user */
int num, arr_len = 0;
printf("Enter numbers. CTRL + D to end: ");
while(scanf("%d", &num)) {
A[arr_len] = num;
arr_len++;
}
return arr_len;
}
void val_swap(int *a, int *b) {
int tmp;
/* Save the value of b to temp var */
tmp = *b;
/* Swap the pointer values */
*b = *a;
/* Reassign value */
*a = tmp;
}
答案 0 :(得分:0)
也许getvals的返回值小于'5 3 0 0 9 9 10 11 13 14 9 9'的数量,所以数据很多。
但是我想知道是否可以通过int vals [len]编译,当len为0时,我们不能说这是否正确,但是vals的大小已经固定,因为vals的空间在堆栈,没有堆。
因此,我认为没有足够的空间来运行该程序。