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; }
提示
注意输出顺序,先输出奇数之和,再输出偶数之和。