返回数组中找到的所有偶数

时间:2014-11-19 14:49:47

标签: c arrays pointers random malloc

我正在尝试创建一个程序,如下所示:要求用户输入数组的长度。然后创建数组并用随机数填充,其长度是用户在开头指定的数组。之后,我必须创建一个名为getEvenNumbers的函数,在其中我确定数组中的哪些数字是偶数。完成后,我int main调用getEvenNumbers并打印找到的所有偶数。这是我到目前为止的代码:

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

void getEvenNumbers(int *, int *);

int main()
{
    int i, j, k, N, w, size, *tab, *tabPtr = 0, *sizePtr = 0;

    printf("Enter the desired length of the array: ");
    scanf("%d", &N);

    size = N;

    sizePtr = &size;

    tab = (int *)malloc(sizeof(int)*size);

    srand(time(0));

    for(i = 0; i < size; i++)
    {
        j = rand();
        tab[i] = j;
    }

    tabPtr = &tab[0];

    printf("The array created is:\n");
    for(k = 0; k < size; k++)
        printf("%d\t", *(tabPtr+k));

    printf("\n\n");

    getEvenNumbers(tabPtr, sizePtr);
    printf("The pair numbers are:\n");
    for(w = 0; w < *sizePtr; w++)
        printf("%d\t",*(tabPtr+w));

    return 0;
}

void getEvenNumbers(int *tab, int *sizePtr)
{
    int i = 0, w = 0;

    for(i = 0; i < *sizePtr; i++)
    {
        if(tab[i]%2 == 0)
        {
            tab[w] = tab[i];
            w++;
        }
    }
}

我已经成功创建了任何给定长度的随机数组。但是,我正在努力返回该数组中的所有偶数。有人可以解释为什么这不会只返回偶数吗?

1 个答案:

答案 0 :(得分:0)

编辑: 对不起,我完全忽略了你使用C而不是C#。我会尝试一下。你走了!

int[] getEvenNumbers(int numbers[], int count)
{
    for (i = 0; i < count; i++)
    {
        if (numbers[i] % 2 == 0)
        {
            printf("%d \t", array[i]);
        }
    }
}