编写函数int fun(int *a,int n),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到

编写函数int fun(int *a,int n),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,输出:2 4 6 8 10 12 14 n=7
这么写哪里错了:
#include<stdio.h>
int fun(int *a,int n)
{

int i,j;
for(i=0;i<n;i++)
if(a[i]%2!=0)
{
for(j=i;i<n-1;j++)
a[j]=a[j+1];
i--;
n--;
}
a[n]=-1;
return n;
}

void main()
{
int fun(int *a,int n);
int x[15],i,n;
for(i=0;i<15;i++)
scanf("%d",x+i);
n=fun(x,15);
for(i=0;x[i]!=-1;i++)
printf("%d ",x[i]);
printf("n=%d\n",n);
}

第1个回答  推荐于2018-04-04
if(a[i]%2!=0)
{
for(j=i; i<n-1; j++) //改为for(j=i; j<n-1; j++) 应该是你粗心写错了
a[j]=a[j+1];
i--;
n--;
}本回答被提问者和网友采纳
第2个回答  2013-05-28
你传进函数的是形参不是实参,在函数里的修改不会影响主程序的n。函数用&n试试。追问

这两个有必然联系吗?→_→

相似回答