下列的代码是对二维数组的元素分类统计,用指针完成。请在//后面加上注释。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #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.