俺和小师妹贴贴 发表于 2021-11-13 21:50:18

计算二维数组周边元素(矩阵边缘)的平均值

#include <stdio.h>
int average(int *(a)[],int m,int n);//编译器提示这一行有问题
int main()
{
        int m,n,i,j;
        scanf("%d,%d",&m,&n);//输入行数和列数
        int array;
//输入二维数组的元素
        for(i=0;i<m;i++){
                for(j=0;j<n;j++){scanf("%d",*(array+i)+j);
                }
        }
        float ave = average(*(array)[],m,n);//编译器提示这一行有问题
        printf("%f",ave);
        return 0;
}
int average(int *(a)[],int m,int n)
{
        int sum,i,num;
        for(i=0;i<m;i++){sum+=*(*(a)+i);
        }
        for(i=0;i<m;i++){sum+=*(*(a+m)+i);
        }
        for(i=0;i<n-2;i++){sum+=*(*(a+i+2)+1);
        }
        for(i=0;i<n-2;i++){sum+=*(*(a+i+2)+n);
        }
        num=m*2+(n-2)*2;
        float d=sum/num;
        return d;
}
编译器提示第2行和第12行有问题,程序运行的时候输入完行数列数和所有元素之后就结束了,打印不出结果,请大佬帮忙看看是怎么回事啊{:10_250:}

jackz007 发表于 2021-11-13 22:27:02

本帖最后由 jackz007 于 2021-11-14 20:24 编辑

#include <stdio.h>

float average(int * a[] , int m , int n)
{
      int sum , i , num                                                                        ;
      for(sum = 0 , i = 0 ; i < m ; i ++) sum += a + a                         ;
      for(i = 1 ; i < n - 1 ; i ++) sum += a + a                               ;
      num = m * 2 + (n - 2) * 2                                                                ;
      return 1.0 * sum / num                                                                   ;
}

int main(void)
{
      int m , n , i , j                                                                        ;
      scanf("%d%d" , & m , & n)                                                                ; //输入行数和列数
      int array , * p                                                               ;
      for(i = 0 ; i < m ; i ++) {               
                for(j = 0 ; j < n ; j ++) scanf("%d" , & array)                            ;
                p = array                                                                  ;
      }
      printf("%f\n" , average(p , m , n))                                                      ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
3 4
1 2 3 4
5 6 7 8
9 10 11 12
6.500000

D:\00.Excise\C>
页: [1]
查看完整版本: 计算二维数组周边元素(矩阵边缘)的平均值