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

编写函数 int fun(int (*p)[N],int m),功能:计算m行N列的二维数组外
围各数据之和。 例如,下面程序输出:57
已有代码(不可更改):
#include<stdio.h>
#define N 5
void NONO();
int fun(int (*p)[N],int m)
{
}
void 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();
}
void 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);
}

实际运行确认了,下面的程序OK:

#include<stdio.h>
#define N 5
void NONO();
int fun(int (*p)[N],int m)
{
int sum=0;
int i,j;
for(i=0;i<m;i++)
{
if(i==0||i==(m-1))
{
for(j=0;j<N;j++)
sum+=p[i][j];
}
else sum+=p[i][0]+p[i][N-1];
}
return sum;
}
void 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();
}
void 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);
}
温馨提示:答案为网友推荐,仅供参考
相似回答