把整型数组res中所有奇数放到另一个整型数组goal中

自定义函数,把整型数组res中所有奇数放到另一个整型数组goal中,并返回写入到goal数组中元素的个数。函数原型为:int transfer(int res[],int goal[],int n); n为res数组中有效元素的个数。
自定义 按下标顺序输出数组中有效元素值。函数原型:void print(int a[],int n);
在main函数中,自定义数组并调用自定义的transfer函数,测试该函数功能实现。
扩展:调用transfer函数后,res数组中的奇数如果不保留,仅保留偶数,该如何实现?

img

原题目和扩展功能都实现了,代码如下:

#include <stdio.h>

//这个函数不改变res中的数据
int transfer(int res[],int goal[],int n)
{
    int k = 0;
    for(int i=0;i<n;i++)
    {
        if(res[i]%2==1)
            goal[k++] = res[i];
    }
    return k;
}
//这个函数删除res中的奇数,只保留偶数
int transfer_2(int res[],int goal[],int n)
{
    int k = 0;
    int j = 0;
    for(int i=0;i<n;i++)
    {
        if(res[i]%2==1)
            goal[k++] = res[i];
        else
            res[j++] = res[i];
    }
    return k;
}

int main()
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int b[10],k=0;
    int i;
    k = transfer(a,b,10);
    //输出b
    printf("新生成的奇数数组:");
    for (i=0;i<k;i++)
    {
        printf("%d ",b[i]);
    }
    printf("\n");
    //输出a
    k = transfer_2(a,b,10); //调用第二个函数,删除a中的奇数,只保留偶数
    printf("a中的数据:");
    for (i=0;i<10-k;i++) //a中只剩下10-k个数据
    {
        printf("%d ",a[i]);
    }
    return 0;
}


int transfer(int res[],int goal[],int n)
{
    int  m = 0;
    for(int i=0;i<n;i++)
        if(res[i]%2==1)
          goal[m++] = res[i];
    return m;
}