gpt4 book ai didi

c - 在循环中使用 scanf 的程序打印不正确的输出

转载 作者:行者123 更新时间:2023-11-30 18:38:45 24 4
gpt4 key购买 nike

我不知道这段代码发生了什么。

#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

它不断询问更多的数字,然后从给定的输入集中打印出一些随机数字。

我该如何解决这个问题?

最佳答案

c 使用 0 索引,这意味着数组索引从 0 而不是 1 开始。数组上的 for 循环应如下所示:

int array[ARRAY_LENGTH], i;
for (i = 0; i < ARRAY_LENGTH; ++i) {

这将确保 i 将从 0ARRAY_LENGTH - 1 并且不会超出数组的范围。

这些行:

for(i=1; i<=5; i++)
printf("%d\n", ii[i]);

将访问 ii 的元素 5,其中最大索引为 4。这将导致未定义的行为,这可能就是您看到随机的原因出现数字。

关于c - 在循环中使用 scanf 的程序打印不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com