请编写一个函数fun (int *a,int n,int *odd,int *even)

函数功能是分别求出数组中的所有奇数之和以及所有偶数之和。形参n给出数组中的数据个数;利用指针odd返回奇数和,利用even返回偶数之和。
#include<stdio.h>
#define N 100
int b[N];
void fun (int *a,int n,int *obb, int *even)
{
int i,s=0,k=0;
for (i=0;i<n;i++)
{
if ((b[i]%2)==0)
k=k+b[i];
else
s=s+b[i];
}
*obb=s;
*even=k;
}
void main()
{
int n;
int i;
int *a,*obb=0,*even=0;
printf("请输入n\n");
scanf("%d",&n);
a=b;
printf("请输入%d个数字",n);
for (i=0;i<n;i++)
{
scanf("%d",(a+i));
}
a=b;
fun (a,n,obb,even);

printf("%d %d\n",*obb,*even);
}
求解释为什么不对。

*obb=0,*even=0不应该是指针,否则需要分配内存。

#include<stdio.h>
#define N 100
int b[N];
void fun (int *a,int n,int *obb, int *even)
{
 int i,s=0,k=0; 
 for (i=0;i<n;i++)
 { 
  if ((b[i]%2)==0)
   k=k+b[i];
  else 
   s=s+b[i];
 }
 *obb=s;
 *even=k;
}
void main()
{
 int n;
 int i;
 int *a,obb=0,even=0;
 printf("请输入n\n");
 scanf("%d",&n);
 a=b;
 printf("请输入%d个数字",n);
 for (i=0;i<n;i++)
 {
  scanf("%d",(a+i));
 }
 a=b;
 fun (a,n,&obb,&even);
 
 printf("%d    %d\n",obb,even);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-02
int *a,*obb=0,*even=0;

不是给你这么用的……都指向0了还如何保存结果(汗
...
int *a,obb=0,even=0;
...
fun (a,n,&obb,&even);
...