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

时间:2019-08-16 11:30:48

标签: 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以外的所有值放入:

 double secondArray[14]

我一直在使用foor循环,但是由于它使用了相同的索引,因此它在第二个数组中留有空白,并且没有到最后。

1 个答案:

答案 0 :(得分:1)

在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 

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