一道C语言编程题。

请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给出数组中数据的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24,利用指针even返回偶数之和8.

#include <stdio.h>

/* delete all n in array a */
void fun(int *a,int n,int *odd,int *even)
{
        int i;
        *odd = 0;
        *even = 0;

        for (i = 0; i < n; i++) {

                if (a[i] % 2)
                        *odd += a[i];
                else
                        *even += a[i];

        }   
}

int main(void)
{
        int a[] = {1, 9, 2, 3, 11, 6}; 
        int odd, even;

        fun(a, 6, &odd, &even);
        printf("%d %d\n", odd, even);
        return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-20
void fun(int *a,int n,int *odd,int *even)
{
for(int i=0;i<n;i++)
{
if(a[i]%2==0)
*even=*even+a[i];
else
*odd=*odd+a[i];
}
}
void main()

{ int a[5]={1,2,3,4,5};int o=0;int e=0;int *odd=&o;int *even=&e;
fun(a,5,odd,even);
cvWaitKey(0);
}
第2个回答  2013-12-20
#include "stdio.h"
int fun(int *a,int n,int *odd,int *even){
  *odd=0;
  *even=0;
  while(--n>-1){
    if(a[n]%2){
      *odd+=a[n];
    }
    else{
      *even+=a[n];
    }      
  }
}
int main(int argc,char **argv[]){
  int a[]={1,9,2,3,11,6};
  int x,y;
  fun(a,6,&x,&y);
  printf("(%d %d)\n",x,y);
  return 1;
}

第3个回答  2013-12-20
 
#include<stdio.h>
void fun(int *a,int n,int *odd,int *even)
{
*odd=0;
*even=0;
for(int i=0;i<n;i++)
{
 if(a[i]&1)//奇数
 *odd=*odd+a[i];
 else//偶数
*even=*even+a[i];
}
}
void main()
{
 
int a[6]={1,9,2,3,11,6};
int odd,even;
fun(a,6,&odd,&even);
printf("奇数:%d \n偶数:%d\n",odd,even);
}

第4个回答  2013-12-20
胡扯扯的效率不是最高的,判断奇数和偶数,只需判断最后一位是不是1,如果是1则为奇数,否则为偶数。
相似回答