请大家看看我错哪了?
V 资深达人 2017-07-30 17:58:03
1241 1 0

#include <stdio.h>

#include <stdlib.h>

#define  N  5

double fun ( int w[][N] )

{

int i,j;

int sum1,sum2,sum;

double average;

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

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

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

{

sum1=w[0][j]+w[N-1][j];

}

else

{

sum2=w[i][0]+w[i][N-2];

}

sum=sum1+sum2;

average=sum*1.0/((N-1)*(N-1));

return (average);




}


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;void NONO ();

   double s ;

   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 );

   NONO( );

}


void NONO ()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

  FILE *rf, *wf ;

  int i, j, a[5][5]; double s ;


  rf = fopen("in.dat","r") ;

  wf = fopen("out.dat","w") ;

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

  for(j = 0 ; j < 5 ; j++) fscanf(rf, "%d ", &a[i][j]) ;

  s = fun(a) ;

  fprintf(wf, "%lf\n", s);

  fclose(rf) ;

  fclose(wf) ;

}


问题来自: 编程题真题

共 1 个回答

    qqq 资深元老 助教 2903天前

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

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

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

    {

    sum1=w[0][j]+w[N-1][j];

    }

    else

    {

    sum2=w[i][0]+w[i][N-2];

    }

    sum=sum1+sum2;

    你仔细看看 你这个累加求和的过程对吗?你的sum1和sum2分别只存储了最后一次运算的和。而且,以sum1为例,i=0时,sum1=w[0][j]+w[N-1][j];而i=N-1时,又会运行一遍sum1=w[0][j]+w[N-1][j],是不是重复了呢?

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题