2567 - 指针练习-2

编写一个函数mySum,其功能是计算一个数组中的所有奇数之和与偶数之和。

函数原型可参考如下:

void  mySum(int *p,  int len,  int *sumOdd,  int *sumEven);

其中,p为指向数组首元素的指针,len为数组中的元素个数,sumOdd为指向所求奇数之和的指针,sumEven为指向所求偶数之和的指针

如,数组中的原始数据为:1,0,3,4,0,2,5。则函数计算的奇数之和为9,偶数之和为6。

编写程序,从键盘输入一个正整数n(1<=n<=100),代表数据元素个数,接着输入n个整数,代表数组元素的初始值,调用mySum函数处理完毕后,在主函数中输出计算出的奇数之和与偶数之和。输出的两个数据之间用空格分隔。

题目输入

6 3 10 5 6 9 4

题目输出

17 20

输入/输出样例

题目输入

10 4 0 0 1 9 4 9 4 5 10

题目输出

24 22

提示

注意输出顺序,先输出奇数之和,再输出偶数之和。

C语言解答

#include<stdio.h>
int main()
{
	void  mySum(int *p,  int l,  int *sumJ,  int *sumO); 
	int *p, n, i, *sumJ, *sumO, sj=0, so=0, a[100];
	p = a;
	sumJ = &sj;
	sumO = &so;	
	scanf("%d", &n);
	for(i=0; i<n; i++)
	{
		scanf("%d", &a[i]);

	}
	mySum(p, n, sumJ, sumO);
	printf("%d %d", sj, so);
}


void  mySum(int *p,  int l,  int *sumJ,  int *sumO)
{
	int i;
	for(i=0; i<l; i++)
	{
		if(*(p+i)%2 == 0 )
			*sumO += *(p+i);
		else
			*sumJ += *(p+i);
	}

}

C++解答

#include <stdio.h>    
#define N 100      

void fun(int *p,int len,int *sumodd,  int *sumeven)      
{ int i;      
  *sumodd=*sumeven=0;      
  for(i=0;i<len;i++)      
   if(p[i]%2==0)      
    *sumeven=*sumeven+p[i];      
   else     
    *sumodd=*sumodd+p[i];      
}       
     
int main()      
{ int a[N],i,n,sumodd,sumeven;      
   scanf("%d",&n);      
  for(i=0;i<n;i++)       
   scanf("%d",&a[i]);      
   fun(a,n,&sumodd,&sumeven);      
   printf("%d %d",sumodd,sumeven);  
   return 0;      
}  



提示

注意输出顺序,先输出奇数之和,再输出偶数之和。

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题