如何在c中将数据推送到数组中

fcg9iug3  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(136)

我试着把偶数(第一个)然后奇数推入同一个数组(1到N)。这里我试着先推入偶数,但做不到。有人能帮我吗?数组应该是这样的{2,4,6,8,10,1,3,5,7,9)。这里n = 10

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int array[n];

    for (int i = 0; i < n; i++)
    {
        if (i % 2 == 0)
        {
            array[n] = i;
        }
    }
    for (int i = 0; i < n; i++)
    {
        printf("%d\n", array[i]);
    }
    return 0;
}
}

我试着把偶数先放到数组里,但是我失败了

xbp102n0

xbp102n01#

这其实是一个非常简单的问题。正如其他人所指出的,你的大问题是给数组赋值越界。让我们通过硬编码n来避开I/O问题(总是检查scanf的返回值)。
在迭代过程中,我们只需要根据数组的奇数或偶数来偏移数组的索引,奇数从索引n / 2开始,然后加上i / 2,这可以简化为(i + n) / 2
对于偶数,我们只需要除以2就可以得到指数。
考虑3:我们知道它应该在索引6处结束(3 + 10) / 2 =〉13 / 2 =〉6或者4``4 / 2 =〉2

#include <stdio.h>

int main(void) {
    int n = 10;
    int arr[n];

    for (int i = 0; i < n; i++) {
        if (i % 2) {
            arr[(i + n) / 2] = i;
        }
        else {
            arr[i / 2] = i;
        }
    }

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

    return 0;
}

相关问题