#include <stdio.h>
#include <stdlib.h>
int main()
{
while(1)
{
int m,n;
scanf("%d",&m);
if(m == 0)
{
break;
}
scanf("%d",&n);
int ** matrix_left = malloc(m*sizeof(int*));
int ** matrix_right = malloc(m*sizeof(int*));
for(int i=0; i<m; i++)
{
matrix_left[i] = malloc(n*sizeof(int));
matrix_right[i] = malloc(n*sizeof(int));
}
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%d",&matrix_left[i][j]);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%d",&matrix_right[i][j]);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
matrix_left[i][j] += matrix_right[i][j];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
printf("%d ",matrix_left[i][j]);
printf("\n");
}
for(int i=0; i<m; i++)
{
free(matrix_left[i]);
free(matrix_right[i]);
}
free(matrix_left);
free(matrix_left);
}
return 0;
}
/*
2 2
1 1
1 1
-1 -1
10 9
*/
C99支持变长数组,如下代码更简洁
#include <stdio.h>
#include <stdlib.h>
int main()
{
while(1)
{
int m,n;
scanf("%d",&m);
if(m == 0)
{
break;
}
scanf("%d",&n);
int matrix_left[m][n];
int matrix_right[m][n];
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%d",&matrix_left[i][j]);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
scanf("%d",&matrix_right[i][j]);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
matrix_left[i][j] += matrix_right[i][j];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
printf("%d ",matrix_left[i][j]);
printf("\n");
}
}
return 0;
}