如何在C中将int数据存储到数组中?

如何在C中将int数据存储到数组中?,c,arrays,C,Arrays,我编写了这个简单的代码来计算从1到1000的数字,这些数字是3的倍数,然后将它们存储在一个数组中,然后打印数组 #include <stdio.h> void main(void){ int i,x,y; int A[1000]; for(i=1;i<1000;i++){ x=i%3; if(x==0){ A[i]=i; printf("%d\n",A[i]); }

我编写了这个简单的代码来计算从1到1000的数字,这些数字是3的倍数,然后将它们存储在一个数组中,然后打印数组

 #include <stdio.h>

    void main(void){

    int i,x,y;
    int A[1000];

    for(i=1;i<1000;i++){
    x=i%3;

    if(x==0){

        A[i]=i;
        printf("%d\n",A[i]);

       }
      }
    }

代码工作正常,但我想问的是,数组是开始存储[0]还是[1]中的值?因为循环计数器i=1。

因为设置数组项值的唯一位置是:

A[i]=i;

i从1开始,并且不会以任何方式向后设置,要设置的第一个条目当然是[1]。

数组将开始将索引1中的值存储为循环start from i=1。 索引0处的值将保持不变。 但你的逻辑是错误的。如果要打印数组A[],它将打印垃圾值
对于不是3的倍数的数组索引。

您说代码工作正常。这让我大吃一惊

我不确定您想对数据做什么,但您可能想要这样的东西,因为您正在寻找一个3的倍数的数字数组:

#include <stdio.h>

    int main(void){  // <<<< int, not void!

    int i,x,y;
    int A[1000];
    y = 0;
    for(i=0;y<1000;i++)  // <<<<< keep looping until array is full, --> test for y not i
    {
      if(i%3 == 0)       // <<<<< no need to assign the result to x
      {
        A[y++]=i;        // fill array only when i%3 == 0; only then increment index count
        printf("Value %d is divisible by 3\n", i);
      }
    }
}

因此,如果我打印数组,它是否会在[0]处包含0?如果声明数组为静态,它将被初始化为所有零-因此是的。但除此之外,数组的值是不能保证的,除非您设置它-所以不能。因为它是唯一具有已知值的元素是a[3],a[6]等等。它是不可预测的,您不能将它初始化为任何值。@RahulKhatri,他们说了什么。@haccks:为什么错了?代码的哪一部分?提示:只有当i%3==0时才初始化数组的元素。@gartenriese;阅读我的答案。@haccks:我仍然不知道他的代码哪里错了。谢谢,但我得到了正确的结果,我写的代码工作正常。根据您的实现程序,代码不会打印任何垃圾值,因为您只在索引是3的倍数时打印索引,所以不会打印垃圾值。但它会存储这样的值。A[0]=垃圾A[1]=垃圾。。A[3]=3 A[4]=垃圾。。A[6]=6`@RahulKhatri——这正是我在回答中提出略有不同的代码的原因——数组中只存储好的值。