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