思路:首先创建和二维数组等大的一维数组,再遍历二维数组,找出二维数组里的奇数。将奇数元素存入所创建的一维数组中。
返回奇数的个数,这样可以控制输出一维数组的长度,让其输出的全为二维数组里的奇数。
这里二维数组举例为4*5:
#include<iostream>
using namespace std;
int search(int (*p1)[5],int n,int *p2) //查找奇数的函数
{
int i,j,k=0;
for(i=0;i<n;i++)
for(j=0;j<5;j++)
{
if(p1[i][j]%2==1){ //判断元素是否为奇数
*p2=*(*(p1+i)+j);
p2++;
k++;
}
}
return k; //返回奇数的个数,对应输出一维数组中存放二维数组的元素
}
void print(int *p,int n) //输出一维数组
{
for(int i=0;i<n;i++)
{
cout<<p[i]<<'\t';
if((i+1)%5==0)cout<<'\n';
}
}
void print(int (*p)[5],int n) //函数重载,输出二维数组
{
for(int i=0;i<n;i++){
for(int j=0;j<5;j++)
cout<<p[i][j]<<'\t';
cout<<'\n';
}
}
int main()
{
int a[4][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}}; //创建一个二维数组
int b[20]; //创建一个和二维数组等大的一维数组来存放二维数组中的奇数
int n=search(a,4,b); //返回二位数组中奇数的个数,也是一维数组中存放有效数据的个数
cout<<"二维数组为:\n";
print(a,4);
cout<<"二维数组中奇数的个数为:"<<n<<"\n二维数组中奇数所组成的一维数组为:\n";
print(b,n); //只要输出一维数组中存放的二维数组的奇数,所以要输出数组的前n个
return 0;
}