下列的代码是对二维数组的元素分类统计,用指针完成。请在//后面加上注释。
#include #include //
#define M 20//
#define N 20
int main()
{
int a[M][N],*m,*n,*sum1,*sum2,id=1;//
void input(int a[M][N],int *m,int *n);
void work(int a[M][N],int *m,int *n,int *sum1,int *sum2);//
m = (int *)malloc(sizeof(int));//
n = (int *)malloc(sizeof(int));
sum1 = (int *)malloc(sizeof(int));
sum2 = (int *)malloc(sizeof(int));
while(scanf("%d %d",m,n)!=EOF)
{
input(a,m,n);//
printf("Case %d:\n",id++);
work(a,m,n,sum1,sum2);//
}
return 0;
}
void input(int a[M][N],int *m,int *n)
{
int i,j;
for(i=0;i<*m;i++)
{
for(j=0;j<*n;j++)
{
scanf("%d",a[i]+j);//
}
}
}
void work(int a[M][N],int *m,int *n,int *sum1,int *sum2)
{
int i,j;
*sum1 = 0;//
*sum2 = 0;
for(i=0;i<*m;i++)
{
for(j=0;j0)
(*sum1) += *(*(a+i)+j);//
else
(*sum2)+= *(*(a+i)+j);
}
}
printf("正数的和是%d,负数的和是%d.\n",*sum1,*sum2);
}有多组测试数据,每组数据的第一行有两个整数m、n,接着有m行、n列个整数。
按样例输出。
2 3 4 5 6 0 -4 9
Case 1: 正数的和是24,负数的和是-4.