所以我有一个包含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循环,但是由于它使用了相同的索引,因此它在第二个数组中留有空白,并且没有到最后。
答案 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
实际上,您不需要定义第二个数组。您可以将不需要的值移到原始数组的末尾,并将实际元素的新值保留在数组中。