我不知道这段代码发生了什么。
#include<stdio.h>
int main()
{
int ii[5], i;
for (i=1; i<=5; i++)
{
scanf("%d", &ii[i]);
}
printf("----------------------\n");
for(i=1; i<=5; i++)
printf("%d\n", ii[i]);
return 0;
}
编译后我提供输入
1 2 3 4 5
然后按原样打印, 但是当我以相反的顺序提供输入时:
5 4 3 2 1
它继续要求更多数字,然后从给定的输入集打印出一些随机数字。
我该如何解决这个问题?
答案 0 :(得分:3)
c使用0 indexing
表示数组索引从0开始而不是1.数组上的for循环应如下所示:
int array[ARRAY_LENGTH], i;
for (i = 0; i < ARRAY_LENGTH; ++i) {
这将确保i
从0
转到ARRAY_LENGTH - 1
,并且不会超出数组的范围。
这些行:
for(i=1; i<=5; i++)
printf("%d\n", ii[i]);
将访问5
的最大索引为4的元素ii
。这将导致未定义行为,这可能是您看到随机数出现的原因。