编写函数 int fun(int (*p)[N],int m),功能:计算m行N列的二维数组外

来源:百度知道 编辑:UC知道 时间:2024/07/11 08:26:40
编写函数 int fun(int (*p)[N],int m),功能:计算m行N列的二维数组外
围各数据之和.例如,下面程序输出:57 #include<stdio.h>
#define N 5
int fun(int (*p)[N],int m)
{
}
main()
{int a[4][N]={{3,2,5,4,2},{6,2,3,9,1},{4,6,1,8,6},{7,6,5,4,2}};
printf("sum=%d\n",fun(a,4));
NONO();
}
NONO()
{FILE *rf,*wf;int a[6][N],i,j,k;
rf=fopen("in2.dat","r");
if(rf==NULL)
{puts("No exist in2.dat");return;}
wf=fopen("out2.dat","w");
for(i=0;i<6;i++)
for(j=0;j<N;j++)
fscanf(rf,"%d",&a[i][j]);
for(i=0,k=5;k>2;k--,i++)
fprintf(wf,"%d\n",fun(a+i,k));
fclose(rf);fclose(wf);
}


int fun(int (*p)[N],int m)
{
int sum = 0;

//加上第一行所有的数值
for(int i = 0; i < N; i++)
sum += p[0][i];

//再加上最后一行所有的数值
for(i = 0; i < N; i++)
sum += p[m - 1][i];

//再加上第一列的所有的数值
for(i = 0; i < m; i++)
sum += p[i][0];

//再加上最后一列的所有的数值
for(i = 0; i < m; i++)
sum += p[i][N -1];

//再从总和中减去重复计算的数值
sum -= p[0][0];
sum -= p[0][N - 1];
sum -= p[m - 1][0];
sum -= p[m - 1][N - 1];

return sum;
}