![]() |
#2
rjsp2020-05-08 20:49
|
编写函数 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;
}
#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;
}