求二维数组周边各元素值平方根之和,结果保留三位小数

运行出来数组显示不全,计算的结果也错的
#include <stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

#define M 3

#define N 5

int fun(int a[M][N])

{

int i,j,sum=0;

for(i=0;i<M;i++)

    for(j=0;j<N;j++)

        if(i==M || i==M-1 || j==0 || j==N-1)

            sum=sum+sqrt(a[i][j]);

    return sum;

}

void main()

{

int aa[M][N]={{89,12,18,13,54},{78,63,16,18,36},{13,26,65,20,23}};

int i,j,y;

system("CLS");

for(i=0;i<M;i++)

{

for(j=1;j<N;j++)

    printf("%6d",aa[i][j]);

printf("\n");

}

y=fun(aa);

printf("\n所求值为%.3lf\n",y);

printf("\n");

}

数组显示不全是因为打印数组那里j要从0开始,然后计算结果错误因为平方根的和用double类型存储,计算那几行和那几列也要修改一下,如下:(更正)


#include <stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<math.h>

#define M 3

#define N 5

double fun(int a[M][N])

{
int i,j ;
double sum=0;  //平方根的和改为double类型,因为sqrt函数返回值是double 
 
for(i=0;i<M;i++)
 
    for(j=0;j<N;j++)
 
        if(i==0 || i==M-1 || j==0 || j==N-1)//第一行和最后一行,以及第一列和最后一列计算 
 
            sum=sum+sqrt(a[i][j]);
 
    return sum;
}

int main()

{
int aa[M][N]={{89,12,18,13,54},{78,63,16,18,36},{13,26,65,20,23}};
 
int i,j;
double y;
 
system("CLS");
 
for(i=0;i<M;i++)
 
{
 
for(j=0;j<N;j++)
 
    printf("%6d",aa[i][j]);
 
printf("\n");
 
}
 
y=fun(aa); //因为平方根的和为 double,所以y也改为double类型 
 
printf("\n所求值为%.3f\n",y);
 
printf("\n");
}

img