C语言输入十个数,建立2个数组,将奇数和偶数分别赋值于2个数组.

小弟今天才学数组,不懂的地方比较多。请问下面的代码的错误。
还有{m[10]=a[i]}的写法对吗?#include<stdio.h>
#define z 5
void main()

{int a[z],m[10],n[10],i;/*m[],n[]是含有奇数和偶数的数组。*/
for(i=0;i<z;i++)
{scanf("%d",&a[i]);
if(a[i]%2==0)
m[10]=a[i];
else n[10]=a[i];}
for(i=0;i<10;i++)
printf("%d",m[i]);}

第1个回答  2012-02-28
{
int a[z],m[10],n[10],i; //a只要获取当前输入即可,无需申明数组 --int a,m[10]=0,n[10]=0,i,j = 0,z=0;
for(i=0;i<z;i++) //要输入10次,z需要定义为10
{
scanf("%d",&a[i]); //scanf("%d",&a);
if(a[i]%2==0)
m[10]=a[i]; //m作为目标数组,需要用计数器来索引 m[j++]=a;
else
n[10]=a[i];} //n[z++]=a;
for(i=0;i<10;i++)
printf("%d",m[i]);
}本回答被提问者采纳
第2个回答  2012-02-29
包含所有数的数组a的长度z被定义为5 ,而存放奇数、偶数的数组m,n的长度定义为10,有点不合理,z的长度应比m、n数组长度大,或者相等,虽然原来的定义也不是不可以,只是造成存储空间浪费而已,本人建议初学者,在细节上也要多注意,养成好习惯嘛!
第3个回答  2012-02-29
哥们,你c还真够厉害,
这个题目很简单,
#define z 5
void main()
{
int a[z],m[10],n[10],i;/*m[],n[]是含有奇数和偶数的数组。*/
int j=0,k=0;
for(i=0;i<z;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==0)
m[j++]=a[i];
else
n[k++]=a[i];
}
for(i=0;i<j;i++)
printf("%d",m[i]);
printf("\n");
for(i=0;i<k;i++)
printf("%d",n[i]);
}
第4个回答  2012-02-28
m[i]中,i的范围是0到9,m[10]越界了。编译器不报错,但会造成不可知的影响。
第5个回答  2012-02-28
#include<stdio.h>
#define z 10
void main()

{int a[z],m[10],n[10],i,j=0,k=0;
for(i=0;i<z;i++)
{scanf("%d",&a[i]);
if(a[i]%2==0)
{m[j]=a[i];j++;}
else {n[k]=a[i];k++;}
}

for(i=0;i<j;i++)
printf("%d\t",m[i]);
printf("\n");

for(i=0;i<k;i++)
printf("%d\t",n[i]);
printf("\n");
}
相似回答