C 如何在数组中的每个元素之后插入新元素?

C 如何在数组中的每个元素之后插入新元素?,c,arrays,C,Arrays,如何在数组中的每个元素之后插入新元素 例如,我有一个数组3,4,5,6,7,我想在每个元素后面添加0。因此,修改后的新数组应为3,0,4,0,5,0,6,0,7,0 在过去的几个小时里,我一直在尝试这样做,但没有成功 谢谢大家我还没有测试过这个,但它应该可以工作。 如果您在适当的位置执行此操作,那么您需要像这样反向工作,否则您甚至会在读取数组之前覆盖一些数组 //Make sure it has space for the zeros. //If we have 5 numbers here,

如何在数组中的每个元素之后插入新元素

例如,我有一个数组
3,4,5,6,7
,我想在每个元素后面添加
0
。因此,修改后的新数组应为
3,0,4,0,5,0,6,0,7,0

在过去的几个小时里,我一直在尝试这样做,但没有成功


谢谢大家

我还没有测试过这个,但它应该可以工作。 如果您在适当的位置执行此操作,那么您需要像这样反向工作,否则您甚至会在读取数组之前覆盖一些数组

//Make sure it has space for the zeros.
//If we have 5 numbers here, we need space for 10
int arr[10] = {3, 4, 5, 6, 7};

//Start at the last number (index 4) and work your way down.
//If you start at zero and increment up, you will overwrite data at the beginning of the array.
for (int i = 4; i >= 0; i--)
{
    arr[i * 2] = arr[i]; //Move the number
    arr[i * 2 + 1] = 0; //Add a zero after it
}

因为你们已经在C下标记了它,我将在这里避免向量。 假设已经在堆栈或堆上分配了10个整数的数组。因为有5个元素,所以需要5个零。所以结果数组中的元素总数将是10

void function(int arr[], int size)
{
    int loc = size/2;
    while(size>=0)
    {
        if(size&1)
            arr[size--] = arr[loc--];
        else
            arr[size--] = 0;
    }
}

你试过什么?如果我们能看出你做错了什么,我们会更容易提供帮助。这是一个面试问题吗?在过去的几个小时里,我一直试图这样做,但没有成功。请发布您尝试过的内容。如果:(1)您的数组足够大,您可以在适当的位置执行此操作;(2)你从阵列的末尾开始倒转,一个用代码回答这个问题的人拒绝了OP学习的机会。