gpt4 book ai didi

C - 如何从数组中提取偶数并将它们放入另一个名为 EvenNumbers 的数组中?

转载 作者:行者123 更新时间:2023-11-30 16:46:30 25 4
gpt4 key购买 nike

我的任务是编写一个函数,该函数将识别示例数组 {10,2,9,3,1,98,8] 中的所有偶数,并将它们放入名为 EvenNumbers 的数组中。我必须允许该函数,以便它可以处理数组中不同的数字组合,而不仅仅是上面示例数组中的数字。

我想知道是否有任何方法可以将每次都不同的数字添加到数组中?我如何提取偶数并将它们放入数组中?还对于偶数数组大小,它给我一个错误,即表达式必须具有常量值,但是当我使用 const int 时,它仍然给我这个错误。

这是完整的问题。

“使用样本值数组 {10,2,9,3,1,98,8},编写一个函数来识别数组中的所有偶数,并将其放入名为 EvenNumbers 的数组中。该函数必须在所有情况下都有效,而不仅仅是在所示数组的情况下。假设数组大小始终可通过名为 MAX 的全局常量获得”

这是我到目前为止所拥有的。我不知道如何从 for 循环中提取偶数并将它们放入数组中。我也不知道“表达式必须有一个常量值”是什么意思?

#include <stdio.h>
#include <stdlib.h>

void EvenNumber(int Array[], int size);

int main()
{
int array[7] = { 10,2,9,3,1,98,8 };

EvenNumber(array, 7);
}

void EvenNumber(int Array[], int size)
{
int i;
int EvenArraySize;
for (i = 0; i < size; i++)
{

if (Array[i] % 2 == 0)
{
EvenArraySize++;

}

}

int Even[EvenArraySize];

}

最佳答案

正确的方法是使用 malloc 分配适量的内存。

  1. 计算偶数的个数
  2. 分配存储它们所需的空间
  3. 在此空间中复制偶数
  4. 用这些数字做任何你想做的事
  5. 释放分配的空间

片段:

#include <stdio.h>
#include <stdlib.h>

#define MAX 7

int
main()
{
int array[] = {10,2,9,3,1,98,8};
int *even_numbers;
int i, nb_even_numbers;

for (i = 0, nb_even_numbers = 0; i < MAX; i++)
{
if (array[i] % 2 == 0)
nb_even_numbers++;
}
even_numbers = malloc(sizeof(int) * nb_even_numbers);
if (!even_numbers)
{
perror("malloc");
return 1;
}
for (i = 0, nb_even_numbers = 0; i < MAX; i++)
{
if (array[i] % 2 == 0)
even_numbers[nb_even_numbers++] = array[i];
}
/* do your stuff here */
free(even_numbers);
return 0;
}

关于C - 如何从数组中提取偶数并将它们放入另一个名为 EvenNumbers 的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com