计算二维数组周边元素(矩阵边缘)的平均值
#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-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]