输入数组的大小。但是输入整数for循环无限运行。
#include <stdio.h>
int main() {
int c, array[5], i;
printf("Enter the size of the array.");
scanf("%d", &c);
array[c];
printf("Enter the integers to fill the array.");
for (i = 0; i <= c; i++) {
scanf("%d", &array[i]);
}
for (i = 0; i <= c; i++) {
printf("%d", array[i]);
//if (array[0] >= array[i]) {
// ...
//}
}
return 0;
}
答案 0 :(得分:4)
您的数组具有固定大小5.行array[c];
不会调整大小。这是一个数组访问(可能是一个越界访问),因此整个程序都有未定义的行为。
要定义VLA,必须在调用scanf
1 之后移动数组声明:
int c;
printf("Enter the size of the array.");
scanf("%d",&c);
int array[c];
然后,确保您的循环条件正确。在C数组索引中,基于0,意味着我们在区间[0,c-1]上循环而不是[0,c]。
for(int i = 0; i < c; ++i)
作为争论的最后一点,请注意我是如何将所有变量声明移到最初使用之前的。像这样组织你的代码(具有一定的数据和执行位置)有一个澄清你写的东西的倾向。所以我强烈建议你这样做。
答案 1 :(得分:0)
array[c]
指的是&#39; c&#39;在array
中的位置,并没有做任何富有成效的工作。尝试删除它并检查一次。 0 to c
中的元素,这意味着您使用了c+1
元素而不是c元素。成功:for(i=0;i<c;++i)