把数组A中的一部分数分往B中,一部分分往C中,此时B和C中元素个数未知,这个要怎么写。
比如上图,最后输出n可以输出为6,但是把他放在新定义数组b里面,就会出错为定义了一个常量为0的数组
把数组A中的一部分数分往B中,一部分分往C中,此时B和C中元素个数未知,这个要怎么写。
可以使用malloc动态申请一块可以存放n个整数的内存空间,然后再将数组a中的偶数存入数组b就可以了,存储奇数的办法与此类似。
修改如下:
#include <iostream>
using namespace std;
int main(void){
const int N=10;
int a[N],i=0,n=0;
int m=0;
for(int i=0;i<10;i++){
cin>>a[i];
}
for(int i=0;i<10;i++){
if(a[i]%2==0){
n++;
}else {
m++;
}
}
//使用malloc 动态申请可以一块存放n个int整数的内存 ,然后让int指针b指向这块内存
int * b = (int *)malloc(sizeof(int)*n);
//使用malloc 动态申请可以一块存放m个int整数的内存 ,然后让int指针c指向这块内存
int * c = (int *)malloc(sizeof(int)*m);
// 把数组a中的偶数存入b指针指向的内存位置,奇数存入数组 存入c指针指向的内存位置
int j=0;
int k=0;
for(int i=0;i<10;i++){
if(a[i]%2==0){
b[j]=a[i];
j++;
}else{
c[k]=a[i];
k++;
}
}
// 打印数组b的内容
cout<<"偶数为:"<<endl;
for(int i=0;i<n;i++){
cout<<b[i]<<" ";
}
// 打印数组c的内容
cout<<"\n奇数为:"<<endl;
for(int i=0;i<m;i++){
cout<<c[i]<<" ";
}
cout<<endl;
free(b);
free(c);
b=NULL;
c=NULL;
system("pause");
return 0;
}