指针和二维数组的问题,求数组中奇数之和与偶数之和
首先这是题目编写函数 void fun(int a[ ][ ],int n,int m, int *odd, int *even),其功能是计算二维数组a[n][m]元素中的所有奇数之和与所有偶数之和。利用指针odd返回奇数之和,利用指针even返回偶数之和。编写程序,在主函数中初始化二维数组a[5]6],调用函数fun后输出数组a及计算结果。
因为我不会拿a[][]作为参数写,在函数那里会搞错,所以我改成了这样,求如何改符合题意使用a[][]作为函数参数。
程序代码:
#include <stdio.h> #include <stdlib.h> #define N 5 #define M 6 void fun(int (*a)[6],int n,int m,int *odd,int *even);//函数声明。其中odd返回奇数的和,even返回偶数。 int main() { int a[N][M]={{1,2,3,4,5,6},{7,8,9,10,11,12},{13,14,15,16,17,18},{19,20,21,22,23,24},{25,26,27,28,29,30}}; int (*p)[M]=a; int qishu,oushu; fun(p,5,6,&qishu,&oushu); printf("qishu_sum=:%d\noushu_sum=:%d",qishu,oushu); return 0; } void fun(int (*a)[6],int n,int m,int *odd,int *even) { *odd=0; *even=0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (*(*(a + i) + j)%2==0) { *odd=*odd+*(*(a + i) + j); } else if (*(*(a + i) + j)%2==1) { *even=*even+*(*(a + i) + j); } } } return *odd,*even; }