gpt4 book ai didi

c - 使用循环打印数组会给出垃圾值,但单独打印会给出正确的值

转载 作者:行者123 更新时间:2023-11-30 20:08:51 25 4
gpt4 key购买 nike

我两个月前才开始学习 C 编程,而且是通过看书自学的。因此,如果有任何坏习惯或我可以做的事情来改进 C 编码,如果你们能反馈给我,我将不胜感激。

我目前正在学习如何编写数组的标准输入和输出。以下是我编写的一个程序,用于接受用户对数组的输入,然后使用循环将其打印出来以测试我的输入是否成功。我还在中间单独打印了前三个元素,以测试我的输入是否成功。

#include <stdio.h>

int main()
{
long length;
long i;
long N;
long arr[length];

printf("length of array: ");
scanf("%ld", &length);
printf("input %ld elements in the array: ", length);

N = length;
for (i = 0; i < N; i += 1) {
scanf("%ld", &arr[i]);
}

printf("\n%ld", arr[0]);
printf("\n%ld", arr[1]);
printf("\n%ld\n", arr[2]);

printf("Array:");

for(i=0; i < N; i += 1) {
printf("%ld", arr[i]);
}

return 0;
}

但是,在单独打印第三个元素时我得到了垃圾值,并且在使用循环打印第二个和第三个元素时也得到了垃圾值。

length of array: 3
input 3 elements in the array: 1
2
3

1
2
8589934595
Array:1515396075588589934594

我已经尝试通过在互联网上搜索一周来调试代码,但似乎没有一个答案能够帮助我解决这个问题。如果我什至无法从用户输入和输出,我就无法继续对数组进行编码。请帮我找出我的代码有什么问题。

最佳答案

数组 arr 未正确定义,因此它开始打印垃圾值。

这是我用你的代码得到的输出。 your code

这是尝试过的解决方案

    long length;
long i;
long N;


printf("length of array: ");
scanf("%ld", &length);
printf("input %ld elements in the array: ", length);

N = length;
long arr[length];
for (i = 0; i < N; i += 1) {
scanf("%ld", &arr[i]);
}

printf("\n%ld", arr[0]);
printf("\n%ld", arr[1]);
printf("\n%ld\n", arr[2]);

printf("Array:");

for(i=0; i < N; i +=1) {
printf("%ld", arr[i]);
}

return 0;

我得到的输出是 this

可以看到我在用户输入长度后声明了变量long arr[length]。

所以解决办法就是,把第8行的代码移到第15行

关于c - 使用循环打印数组会给出垃圾值,但单独打印会给出正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206116/

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