【问题标题】:Adding numbers to an array with for loop in C在C中使用for循环将数字添加到数组中
【发布时间】:2019-12-30 13:31:46
【问题描述】:

所以我真的不明白为什么当我使用 for 循环存储从 1 到 4 的数字时,我会得到随机数?当我在没有数组的情况下使用 for 循环时,一切正常,但是当我添加数组时,我得到的数字是随机的,有人可以解释为什么这些数字是随机的吗?这是简单的代码:

int i, arr[5]; for(i=1; i<5; i++){ printf("%d ", arr[i]);

【问题讨论】:

  • 您的数组arr 未初始化。
  • 你没有在那个循环中将 anything 存储到 arr,没有初始化,arr 的内容是 indeterminate。跨度>
  • 您正在打印尚未初始化的内容。你到底想要什么?

标签: c arrays for-loop


【解决方案1】:

您的代码从不显式地为数组中的项目赋值。在 C 中,未显式声明的变量包含随机值。如果您希望数组默认包含零,您需要像这样声明您的数组:

int arr[5] = {0};

如果要将数字 1 到 4 存储在数组中,则需要在 for 循环中添加一行来分配这些值:

arr[i] = i + 1;

【讨论】:

  • 谢谢!我还有一个问题,如何让我的 for 循环从头开始计数以将数字存储在 Array 中,如下所示:1、2、3、4、1、2、3、4 ……等等?我使用了 while(i!=5) 然后是 for 循环,但是代码随后卡在了我的 for 循环中。那么哪一行可以让for循环从start开始计数到填充Array呢?
  • 您可以使用modulus operator 来实现这一点,就像这样(确保这是在您的 for 循环中):arr[i] = (i % 4) + 1;
【解决方案2】:

并在int i, arr[5];之后插入

arr[5] = {1,2,3,4,5};

或者试试这个代码...

int i,arr[5];
    for(i=0;i<5;i++){
        arr[i] = (i + 1);
        printf("%d ",arr[i]);
}

【讨论】:

  • 请删除此答案并编辑您现有的答案。
【解决方案3】:

如果不初始化arr,你最终会得到garbage values

声明时的初始化代码如下:

int arr[5] = {1, 2, 3, 4, 5}; // This is declaration and initialisation of arr
for (int i = 0; i < 5; i++) {
  printf("%d ", arr[i]);
}

【讨论】:

    【解决方案4】:

    使用前需要初始化数组和变量。

    int i = 0, arr[5] = {1,2,3,4,5};
        for(i=0;i<5;i++)
            printf("%d ",arr[i]);
    

    更新了正确答案。

    【讨论】:

    • 这是不正确的。 for 循环将迭代 5 次(从 0 到 4 包括在内)。该问题与数组索引无关;问题是数组中的值永远不会被设置。
    • 我现在注意到了这个错误并分享了一个新的命令行。如果你检查他,我会很感激。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    相关资源
    最近更新 更多