题目:
下列程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功的能中是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。
例如:a数组中的值为
0 1 2 7 9
1 9 7 4 5
2 3 8 3 1
4 5 6 8 2
5 9 1 4 1
则返回主程序后s的值应为3.375。
#include <stdio.h>
// #include <conio.h>
// #include <stdlib.h>
#define N 5
double fun (int w[][N])
{
int i,j,sum=0;
for(i=0;i<1;i++)
{
for(j=i;j<N-i;j++)
{
sum=sum+w[i][j];
}
for(j=i+1;j<N-i;j++)
{
sum=sum+w[j][N-i-1];
}
for(j=N-i-2;j>=i;j--)
{
sum=sum+w[N-i-1][j];
}
for(j=N-i-2;j>=1+i;j--)
{
sum=sum+w[j][i];
}
return 1.0*sum/(4*(N-1));//此处乘以1.0非常重要,否则,结果不满足题意!!
}
}
main()
{
int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
int i,j;
double s;
// clrscr();
printf("***** The array *****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
s=fun(a);
printf("***** THE RESULT *****\n");
printf("The sum is %lf\n",s);
}
另外一种方法:考虑把脚标为0,N-1的数据加起来,再除以个数。