问答题 对于二维数组A[m][n],其中m≤80,n≤80,先读入m和n,然后读该数组的全部元素,编写相应函数求数组A靠边元素之和。
【正确答案】为操作方便,实际算法将二维数组A[m][n]的m,n改为1≤m≤10,1≤n≤10。
   算法由主函数和求数组靠边元素之和、输出数组全部元素、输出数组全部靠边元素四个函数组成。
   程序如下:
   #include<stdio.h>
   #define M 10
   #define N 10
   int sumj zzbys(int a[M][N],int m,int n)/*求数组A靠边元素之和*/
   {
     int i,j,sum=0;
     if((m==0)&&(n==0))
       return(a[0][0]);
   else
   {
     for(i=0;i<m;i++)
     {
        for(j=0;j<n;J++)
         {/*根据数组中靠边元素下标特征,筛选数组全部靠边元素,并累加m/
         if((i==0)‖(i==m-1)‖(J==0)‖(j==n-1))
          sum=sum+a[i][j];    /*累加靠边元素*/
         }
     }
   return(sum);
   }
 }
   void print1(int a[M][N],int m,int n)  /*输出数组a[M][N]全部元素*/
   {
     int i,j;
     for(i=0;i<m;i++)
     {
       for(j=0;j<n;J++)
         printf("/%d",a[i][j]);    /*"/%d"中有2个空格*/
       printf("\n");
     }
     printf("\n");
   }
   void print2(int a[M][N],int m,int n)  /*输出数组a[M][N]全部靠边元素*/
   {
     int i,j;
     for(i=0;i<m;i++)
   {
     for(j=0;j<n;j++)
       if((i==0)‖(i==m-1)‖(j==8)‖(j==n-1))
         printf("/%d",a[i][j]);    /*"/%d"中有2个空格*/
       else
       {
        printf("  ");    /*"  "中有3个空格*/
       }
     printf("\n");
   }
   printf(”\n”);
 }
 main()
 {
   int t[M][N]={{1,1,1,1,1,1,1,1,1,1},/*预置数组元素*/
   {2,2,2,2,2,2,2,2,2,2},
   {3,3,3,3,3,3,3,3,3,3},
   {4,4,4,4,4,4,4,4,4,4},
   {5,5,5,5,5,5,5,5,5,5},
   {6,6,6,6,6,6,6,6,6,6},
   {7,7,7,7,7,7,7,7,7,7},
   {8,8,8,8,8,8,8,8,8,8},
   {9,9,9,9,9,9,9,9,9,9},
   {0,0,0,0,0,0,0,0,0,0}};
   int a,b;
   scanf("/%d",&a);
   scanf("/%d",&b);
   printl(t,a,b);
   print2(t,a,b);
   printf(”/%d\n”,sumj zzbys(t,a,b));
   输出结果为:
   5 5(回车)
   1  1  1  1  1
   2  2  2  2  2
   3  3  3  3  3
   4  4  4  4  4
   5  5  5  5  5
   1  1  1  1  1
   2           2
   3           3
   4           4
   5  5  5  5  5
   48
【答案解析】