运行出来数组显示不全,计算的结果也错的
#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");
}