两个月前我才开始使用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
我已经尝试通过在互联网上搜索一周来调试代码,但是似乎没有答案可以帮助我解决此问题。如果我什至无法从用户输入和输出,就无法继续编码数组。请帮助我找出我的代码有什么问题。
答案 0 :(得分:1)
您需要放置声明
long arr[length];
之后,您将从用户那里获得length
的值。您正在使用length
的未初始化值作为数组的大小。
long length;
long i;
long N;
printf("length of array: ");
scanf("%ld", &length);
printf("input %ld elements in the array: ", length);
long arr[length];
答案 1 :(得分:1)
数组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