C 循环遍历数组并将某些值分配给另一个数组

C 循环遍历数组并将某些值分配给另一个数组,c,arrays,loops,for-loop,C,Arrays,Loops,For Loop,所以我有一个有16个元素的数组。我知道在这个数组中有两个元素是我不想要的。所以我声明了另一个大小为14的数组。但是,我如何循环16个元素的数组,并在没有空格的情况下将这14个变量分配给新数组,因为其他2个值也用于循环中的某个点 例如: double firstArray[16] = {10.0, 2.0, 3.4, 7.0, 50.0, 1.2, 4.2, 6.8, 8.9, 7.9, 8.6, 2.1, 3.2, 4.7, 8.9, 0.8}; 我想循环遍历此数组,并将除2.0和3.4之外的

所以我有一个有16个元素的数组。我知道在这个数组中有两个元素是我不想要的。所以我声明了另一个大小为14的数组。但是,我如何循环16个元素的数组,并在没有空格的情况下将这14个变量分配给新数组,因为其他2个值也用于循环中的某个点

例如:

double firstArray[16] = {10.0, 2.0, 3.4, 7.0, 50.0, 1.2, 4.2, 6.8, 8.9, 7.9, 8.6, 2.1, 3.2, 4.7, 8.9, 0.8};
我想循环遍历此数组,并将除2.0和3.4之外的所有值放入:

 double secondArray[14]

我一直在使用foor循环,但由于它使用相同的索引,它在第二个数组中留下了空格,无法到达结尾

在for循环中将两个变量声明为索引

给你

#include <stdio.h>

int main(void) 
{
    enum { N = 16 };
    double firstArray[N] = 
    {
        10.0, 2.0, 3.4, 7.0, 50.0, 1.2, 4.2, 6.8, 
        8.9, 7.9, 8.6, 2.1, 3.2, 4.7, 8.9, 0.8
    };

    double secondArray[N - 2];

    for ( size_t i = 0, j = 0; i < N; i++ )
    {
        if ( firstArray[i] != 2.0 && firstArray[i] != 3.4 )
        {
            secondArray[j++] = firstArray[i];
        }           
    }

    for ( size_t i = 0; i < N - 2; i++ ) printf( "%.1f ", secondArray[i] );
    putchar( '\n' );

    return 0;
}

事实上,您不需要定义第二个数组。您可以移动原始数组末尾不需要的值,并保留数组中实际元素的新值。

您知道如何在数组上循环吗?您知道如何将值从一个变量分配到另一个变量吗?您知道如何访问特定索引处的数组元素吗?你知道如何增加一个变量吗?那你真的知道你需要知道的一切。所以,请尝试创建一个演示,告诉我们这有什么问题。也许还需要一些时间来刷新。您清楚地知道,并非源数组的所有元素都会在目标数组中的同一位置结束,因此您不能将源数组索引用作目标数组索引,至少不能直接使用。你还能做什么?
10.0 7.0 50.0 1.2 4.2 6.8 8.9 7.9 8.6 2.1 3.2 4.7 8.9 0.8