为什么运行结果是225而不是310?
下列程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a数组中的值为a=0 1 2 7 9
1 11 21 5 5
2 21 6 11 1
9 7 9 10 2
5 4 1 4 1
则返回主程序的s的值为310。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 5
int fun(int w[][N])
{ int i,j,k,s;
s=k=0;
for(i=0;k<2;i=N-1,k++) /*计算第0行和第N-1行元素的平方和*/
for(j=0;j<N;j++)
s+=w[i][j]*w[i][j];
k=0;
for(j=0;k<2;j=N-1,k++) /*计算剩余元素第0列和第N-1列的平方和,结果为所有元素平方之和*/
for(i=1;i<N-2;i++)
s+=w[i][j]*w[i][j];
return s;
}
int main()
{ int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,
21,6,11,1,9,7,9,10,2,5,4,1,4,1};
int i,j;
int 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 : %d\n ",s);
return 0;
}
主函数是给定的,fun函数是我编写的。哪位大侠能告之。